我明白wait()
和notify()/notifyAll()
方法用於替換在其他語言中使用的傳統的循環/輪詢結構的目的:如何等待/通知和條件管理線程
while(true) {
if(pollSomethingForAnEvent())
break;
}
我進一步明白Condition
API是在Java 5中引入以在更「OO」的實現中包裝這個模型。
我不明白就是Java怎麼知道哪個線程通知時Object.notify()
或Condition.signal()
叫,不然怎麼知道的Java與Object.wait()
或Condition.await()
到信號,線程被稱爲?
由於這些方法不需要任何參數,因此JVM如何知道哪些線程將這些通知傳遞給?!?!
一般來說,如果只有一個線程被喚醒,它會先到先服務。也就是說,第一個執行wait命令的線程是第一個被通知的。 – jpm 2012-04-28 15:53:31