我有 n 线程正在执行(线程数组),并且在每个线程中我需要根据其他线程的结果进行一些计算。我怎么能在一个线程中等到其他线程的结果准备好了?
答案 0 :(得分: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();
答案 1 :(得分:0)
这个问题确实有很多可能的答案。经典的是使用具有条件变量的锁(在Java中:synchronized
+ Object.wait()
和Object.notify()
)。
或使用Future<T>
或CompletableFuture<T>
。