我有一个运行threadA
的threadB
。 threadB
完成其run方法后,我希望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
最佳答案
threadB正在运行,并且一旦threadB终止,就会调用doStuff()。
一个更简单的解决方案是让ThreadB在完成运行后执行操作。
Thread threadB = new Thread(new Runnable() {
public void run() {
try {
myRunnable.run();
} finally {
doStuff();
}
}
});
这样就不需要其他线程了。