我有一个运行threadAthreadBthreadB完成其run方法后,我希望threadA执行一些操作。当然,我可以在threadA的代码中执行以下操作:

Thread threadB = new Thread(myRunnable);
threadB.run();
threadB.join();
doStuff();


但是,这将使threadA等待直到threadB完成执行。我不希望这种情况发生。

我希望threadAthreadB运行时保持正常运行,并且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();
        }
    }
});


这样就不需要其他线程了。

07-28 04:38