我注意到沒有isWaiting()方法。是否有可能測試任何線程是否被阻塞等待()一個特定的對象?給定一個Thread對象,是否有可能找到哪個對象,如果有的話,Thread是wait()?如何找出另一個線程是否等待()ing?
0
A
回答
6
那麼,對於等待狀態嘗試thread.getState() == Thread.State.WAITING || thread.getState() == TIMED_WAITING
。
至於線程等待的對象,我不確定,但我懷疑你可以得到線程在沒有本機代碼的情況下要用到的對象。換句話說,即獲得在給定對象上持有鎖的線程,對於純Java似乎也是不可能的(請參閱:Programmatically determine which Java thread holds a lock)。
0
基本的併發方法可能不足以滿足您的需求。你可能想要嘗試java.util.concurrent包。可以解決您的問題的示例類之一是ReentrantLock。這裏是線程上完整的tutorial。
相關問題
- 1. 等待另一個線程
- 2. 如何讓一個線程等待另一個線程?
- 3. 如何讓1個UI線程等待另一個UI線程
- 4. 如何等待線程直到另一個線程完成
- 5. 異步/等待另一個線程ID
- 6. 爪哇等待在另一個線程
- 7. 如何讓一個線程等待並執行另一個?
- 8. 如何讓一個線程等待另一個線程的一部分完成?
- 9. 如何讓一個java線程等待另一個線程的結果?
- 10. 如何讓一個線程等待另一個線程?第2章
- 11. 如何讓一個線程等待另一個線程導致java?
- 12. 如何等待一個線程完成
- 13. 如何從另一個線程通知等待任務完成?
- 14. 讓線程等待執行另一個線程
- 15. MFC主線程等待另一個線程結束
- 16. 主線程不會等待另一個線程完成執行
- 17. 線程正在等待另一個線程
- 18. 當前線程在等待另一個線程時睡眠
- 19. Python線程卡在另一個線程等待用戶輸入
- 20. 線程是否在鎖FIFO上等待?
- 21. C++互斥鎖 - 檢查另一個線程是否正在等待
- 22. SetEvent是否會阻止一個或所有等待的線程?
- 23. 如何使一個進程等待另一個進程
- 24. 使一個線程等待另一個完成
- 25. 在等待裏面另一個等待
- 26. 如何找出線程已處於等待狀態的時間
- 27. C# - 如何讓這個線程等待?
- 28. c#多個線程等待一個ManualResetEvent
- 29. 只等待另一個線程的一部分 - Java
- 30. 什麼是「等待線程」?
我想你是sorta-kinda回答這個問題,因爲這個鎖包含一個getOwner()方法。 – Qwertie 2012-04-20 17:33:20