我有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
不要这样做。相反,只要结果准备就绪,请检查是否有其他任何可以做的结果,然后派遣该工作。没有必要有一个线程等待某些事情发生,只是在事情发生时做些事情。 –