标签: java multithreading synchronization
The Javadoc for Object.wait( timeout )建议在循环中调用wait来检查谓词以处理虚假唤醒:
Object.wait( timeout )
wait
while ( !predicate ) Object.wait( timeout )
然而,该示例没有考虑到在发生虚假唤醒的情况下,需要在后续循环迭代中修改超时以考虑等待的时间。 Pthreads通过指定超时的绝对时间来避免此问题。我自己需要处理这个问题还是内部超时减少?