鄧輝、孫鳴 ([email protected])
2002 年 9 月
Java語言中內建了對於多線程的支持,可以非常方便的創建、控制線程以及在線程之間進行同步操作。另外,為了支持更為高級的線程間同步機制,比如:類似於POSIX中的條件變量,Java在Object類中提供了wait、notify和notifyAll方法,使得所有的類都隱式的繼承了這些方法。特別地,為了提供對於程序健壯性方面的考慮,在Java中提供了對於wait方法超時語意的支持。但是Java在對於wait方法超時語意的支持方面存在模糊性,即在調用具有超時語意的wait方法返回時,無法區分是由於notify的通知還是由於超時觸發的。因此應用開發者在構建需要具有超時語意的應用時,就必須負責對這種語意模糊性進行區分,本文將對這一問題進行剖析,並給出一個比較通用的解決方案。
詳細文章請在http://www-900.ibm.com/developerWorks/cn/Java/l-threadwait/index.sHtml