我使用netbeans和它的分析器來查看線程活動。 這些圖表顯示,當有多個工作線程正在執行時,這些線程可以保持許多狀態:運行,等待,監視。
我寫了我的Java應用程序,以便其工作線程應該只使用只讀變量,而不需要同步。
但是,當執行netbeans分析器時,我可以看到我的線程經常處於監視狀態。 我想他們正在等待顯示器解鎖,但我可以想象哪個顯示器。如何查看哪個監視器是等待的線程?
所以,我的問題是: 有沒有一種方法來理解一個線程正在等待的監視器?
謝謝
我使用netbeans和它的分析器來查看線程活動。 這些圖表顯示,當有多個工作線程正在執行時,這些線程可以保持許多狀態:運行,等待,監視。
我寫了我的Java應用程序,以便其工作線程應該只使用只讀變量,而不需要同步。
但是,當執行netbeans分析器時,我可以看到我的線程經常處於監視狀態。 我想他們正在等待顯示器解鎖,但我可以想象哪個顯示器。如何查看哪個監視器是等待的線程?
所以,我的問題是: 有沒有一種方法來理解一個線程正在等待的監視器?
謝謝
這聽起來像你寫你的程序並不需要同步,哪些是你真的爲什麼要知道的是在它的代碼是,它需要同步ratehr比對象被鎖定的。要查找代碼中的位置,請查看線程轉儲。 Jconsole/jstack可以做到這一點。
++對。每個線程的堆棧應該告訴你爲什麼它在等待。 – 2011-03-18 00:21:32