简单地可以使用 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 所说,等待线程结束势必要挂起当前线程,也就没必要用线程了,也许需要重新考虑一下这种实现方式。
有这种需求用什么线程,线程就是做异步处理的。