我有threadA
运行threadB
。 threadB
完成其运行方法后,我希望threadA
执行一些操作。当然,我可以在threadA
的代码中执行类似的操作:
Thread threadB = new Thread(myRunnable);
threadB.run();
threadB.join();
doStuff();
但这会使threadA
等到threadB
完成执行。我不希望这种情况发生。
我希望threadA
在threadB
运行时保持正常运行,并且只要threadB
终止,就会调用doStuff()
。像这样:
//some code
Thread threadB = new Thread(myRunnable);
// block for b
{
threadB.run();
threadB.join();
doStuff();
}
//some more code which should run while "block for b" is running
答案 0 :(得分:3)
threadB正在运行,一旦threadB终止,就会调用doStuff()。
一个更简单的解决方案是让ThreadB在完成运行后执行操作。
Thread threadB = new Thread(new Runnable() {
public void run() {
try {
myRunnable.run();
} finally {
doStuff();
}
}
});
这样就不需要涉及其他线程了。
答案 1 :(得分:0)
在threadA
中,轮询threadB.isAlive()
,如果threadB
不再运行,请执行您要执行的操作:
threadB.start();
while (...) {
...
if (!threadB.isAlive()) {
// do stuff
}
}