等待Java线程完成的最佳方法是什么,在做其他事情时?由于我在等待时需要做一些事情,所以我无法使用join()
。我打算在isAlive()
上进行民意调查,但我已经读到了这一点,但我觉得这对我的情况来说似乎是完美的。此外,我已经看到isAlive()
在线程实际开始之前可能返回false的一些迹象(https://stackoverflow.com/a/702427/783314)。虽然这个评论可能只是不正确,因为它似乎与Java文档相矛盾"如果一个线程已经启动并且尚未死亡,那么该线程是活的。" ({{3} })
我想要的基本上就像下面的例子中的stillRunning()。虽然如果有另一个更好,相当简单的替代品做同样的事情,我愿意接受它。
我需要做的就是知道线程何时完成。我不需要以其他方式与之沟通。
public class MyService implements Runnable {
public void run() {
for (int j = 0; j < 5; j++){
try {
TimeUnit.SECONDS.sleep(1);
System.out.println("Hello from a thread!");
}
catch (InterruptedException e){
//don't care
}
}
@RequestMapping(value = "/test")
@ResponseBody
void test(HttpServletResponse response) {
Thread t = (new Thread(new MyService()));
t.start();
while (t.stillRunning()){
System.out.println("Yup, t is still running");
//do some important stuff while waiting
}
System.out.println("Ok, now we know t is done");
}
}