2011-03-11 2 views

답변

2

그냥 Semaphore.acquire(int permits)을 사용하십시오. 사용 가능한 허가가 permits까지 기다립니다. 당신이 다른 스레드가 허가를 "훔칠"수 나중에오고 있는지 확인하려면, 그래서이 다음 사용할 수 permits 허가 걸리는 경우

는 true로 fair 세트와 세마포어를 만들 수 있습니다.

0

http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html 링크의 예를 확인하십시오. getNextAvailableItem() 메소드에 조건을 추가하여 링크의 특정 숫자만큼 허가 수가 증가 할 때까지 대기 할 수 있습니다. 문제에 대한 자세한 설명/설명을 공유하십시오.

+0

링크를 표시 할 수 없습니다. –

+0

이 (가) 링크를 업데이트했습니다. – Samra

+0

이것은 세마포어를 "대기"상태로 만드는 방법을 보여주지 않습니다. 하나의 허가증이 이용 가능 해지면 세마포어는 통과 시키지만 최소한 n 개의 허가증이있을 때까지는 세마포어가 차단할 수있는 것이 필요합니다. –

0

죄송합니다. 귀하가하려는 일을 이해하지 못했습니다. 이 경우에는 CyclicBarrier처럼 좋은 메커니즘이 될 것 같습니다.

+0

작업 예제를 제공해 주시겠습니까? –

+0

편집 해 주셔서 감사합니다. 그러나이 작업을 통해 객체 (스레드)에게 쌍으로 개체에 대한 액세스 권한을 부여 할 수는 없습니다. 미안하지만 그건 내 작전이 아니야. 내가 필요한 것은 오직 두 개의 쓰레드가 하나의 객체에 접근 할 수 있고 두 개의 쓰레드가이 객체로 끝난 후 다른 두 명이이 객체에 접근 할 수 있다는 것입니다. 미안 OP에 이것을 상세히 말하지 않기 위해 다시 한번. –