java关于等待线程结束的问题!

2025-03-18 19:51:28
推荐回答(2个)
回答1:

简单地可以使用 Thread.join() 方法来等待线程结束,例如这样修改一下:

Thread t = new Thread() {
  // 同原来的 run()
};
t.start();

// 调用这个方法,会挂起当前线程直至线程t结束
t.join();

join()方法的文档是这么写的: Waits for this thread to die.


也可以用wait/notify或mutex等机制来对两个线程进行同步,稍微复杂一点,例如使用 wait/notify:

new Thread() {
  public void run() {
    // 同原来的代码,加上以下代码用于同步
    synchronized (results) {
      results.notifyAll();
    }
  }
}.start();

// 通过以下代码挂起当前线程,等待其他线程通知
synchronized (results) {
  results.wait();
}

以供参考。


同 i178269245 所说,等待线程结束势必要挂起当前线程,也就没必要用线程了,也许需要重新考虑一下这种实现方式。

回答2:

有这种需求用什么线程,线程就是做异步处理的。