如何使一个线程等待另一个线程导致java?

时间:2015-12-12 21:09:00

标签: java multithreading concurrency wait

我有 n 线程正在执行(线程数组),并且在每个线程中我需要根据其他线程的结果进行一些计算。我怎么能在一个线程中等到其他线程的结果准备好了?

2 个答案:

答案 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>