2009-09-02 3 views
4

나는 자바 세마포어 클래스 drainPermits의 계약을 이해하려고 노력 중이 야허가가없는 경우 Semaphor.drainPermits는 어떤 작업을합니까?

Javadoc가 단순히 읽

공공 INT drainPermits()

Acquire and return all permits that are immediately available. 

Returns: 
    the number of permits 

에는 허가가없는 경우를 현재 사용 가능합니까? 차단 될 때까지 기다렸다가 사용할 수 있습니까?

답변

9

아니요, 즉시 0을 반환합니다. 사용할 수있는 허가가 필요하지 않습니다.

+0

누군가가 잠금을 위해 코드를 사용하고있는 것처럼 보이는 코드를 검토하고 있다면, 그들은 놀랍지 않은 놀라움에 처하게 될 것입니다. 맞습니까? – Uri

+1

정확히 무엇을하는지에 따라 다릅니다. "잠금을 위해 사용"은 실제로 많은 힌트를 제공하지 않습니다. –

+0

1로 초기화하고 드레인을 사용하여 "tryAcquire"를 구현하면 괜찮습니다. 많은 다른 언어와 시스템에서 (비 중첩) 뮤텍스의 많은 구현은 1로 초기화 된 세마포어입니다. – pgast

관련 문제