我有n線程正在執行(線程數組),並且在它們中的每一個線程中,我需要根據其他線程的結果進行一些計算。我如何在一個線程中等待其他線程的結果準備好?如何讓一個線程等待另一個線程導致java?
0
A
回答
0
有兩種選擇。
1)在線程內部需要等待結果,你可以讓它在while循環中休眠。
while(threadResult == null){
this.sleep(your specified amount of time)
}
// When it finally has a value it will continue.
this.value = threadResult;
2)你可以讓你的線程等待,直到其他人通知它。你需要使用他們都有的共同對象,然後等待並睡在另一個對象上。
你的線程中運行的代碼,當你需要其他的效果,請使用,
CommonObject.wait();
當你的其他線程完成其操作並更新你需要,你會通知共有對象的結果,線程等待會繼續其任務。
CommonObject.notify();
0
這個問題確實有很多可能的答案。經典之一是使用帶有條件變量的鎖(Java:Object.wait()
和Object.notify()
)。
或使用Future<T>
或CompletableFuture<T>
。
相關問題
- 1. 如何讓一個線程等待另一個線程?
- 2. 如何讓1個UI線程等待另一個UI線程
- 3. 如何讓一個java線程等待另一個線程的結果?
- 4. 等待另一個線程
- 5. 如何讓一個線程等待另一個線程的一部分完成?
- 6. 如何讓一個線程等待並執行另一個?
- 7. 如何讓一個線程等待另一個線程?第2章
- 8. 讓線程等待執行另一個線程
- 9. 多線程的Java如何讓線程等待一段時間
- 10. 如何等待線程直到另一個線程完成
- 11. Java:如何讓這個主線程等待新線程終止
- 12. 在java中,如何讓一個線程等待一個進程完成?
- 13. 異步/等待另一個線程ID
- 14. 爪哇等待在另一個線程
- 15. C# - 如何讓這個線程等待?
- 16. 如何等待一個線程完成
- 17. Ruby多線程:讓一個線程等待來自另一個線程的信號
- 18. MFC主線程等待另一個線程結束
- 19. 主線程不會等待另一個線程完成執行
- 20. 線程正在等待另一個線程
- 21. 當前線程在等待另一個線程時睡眠
- 22. Python線程卡在另一個線程等待用戶輸入
- 23. 只等待另一個線程的一部分 - Java
- 24. 讓線程等待
- 25. 在wxwidgets中,如何讓一個線程在繼續之前等待另一個線程完成?
- 26. 如何讓線程等待狀態達到第一個線程完成
- 27. c#多個線程等待一個ManualResetEvent
- 28. 如何讓所有線程等待一個
- 29. 使一個線程等待另一個完成
- 30. 如何找出另一個線程是否等待()ing?
如果有n個線程,並且每個線程都等待n-1個其他線程,則聽起來像是有死鎖問題。 T1是否需要T2需要T1結果的結果? – ChiefTwoPencils
不要這樣做。相反,只要結果準備就緒,請檢查是否有其他任何可以做的結果,然後派遣該工作。沒有必要有一個線程等待某些事情發生,只是在事情發生時做些事情。 –