我明白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