如何在java中运行一个线程,让我知道另一个线程何时死亡?

Bha*_*idu 0 java multithreading threadpool

假设我在java中有一个线程A. 这个线程继续执行一些任务A.我有另一个线程B,只有在任务A完成后才能执行任务B. 我如何在Java中实现它?

Jon*_*eet 6

您可以使用Thread.join()基本上阻止一个线程,直到另一个线程终止:

// In thread B
threadA.join();
doStuff();
Run Code Online (Sandbox Code Playgroud)

请注意,如果您使用线程池(例如通过执行程序服务),这将无法正常工作.如果您需要做的(和我一般建议使用执行者,而不是"原始"线程),你需要使执行任务通知所有侦听器,已完成(例如,通过CountDownLatch).

如果你使用番石榴,你也应该看一下ListenableFuture,这简化了事情.