2013-07-17 3 views
1

대기 상태에 여러 스레드가있는 경우. notifyAll()을 호출하는 대신 notify()를 호출하면 어떤 스레드가 대기 상태의 여러 스레드로 통보됩니까?Java 스레드 동기화 알림

+0

이 답변을 모르겠지만 java.concurrent 패키지를 확인하는 것이 좋습니다. 많은 것들을 할 수 있습니다. – Fernando

+0

@Fernando 그/그녀는 어떻게하는 것이지만 어떻게 작동하는지 묻지 않습니다. – m0skit0

답변

3

이것은 정의되지 않은 동작입니다. 누구든지 데리러 갈 수 있습니다. JavaDoc에서 : 어떤 스레드가이 개체에서 대기하는 경우

, 그 중 하나는 가 깨어로 선택된다. 선택 사항은 임의로이며 구현의 재량에 따라 결정됩니다.

네, 그러면 thread starvation이 될 수 있습니다.

1

The javadoc는 말한다 :

선택은 임의적이며, 구현의 재량에 따라 발생합니다.

1

대기 상태에 여러 스레드가있는 경우. notifyAll()을 호출하는 대신 notify()를 호출하면 어떤 스레드가 대기 상태의 여러 스레드로 통보됩니까?

특정 동작은 Java 사양에 정의되어 있지 않지만 JDC 구현은 특정 모니터에 대한 대기열 큐의 앞쪽에있는 스레드를 사용합니다. 그러나 이것은 의지해서는 안됩니다.