【发布时间】:2010-03-05 16:01:18
【问题描述】:
我有一个线程 (Runnable),它启动了许多其他线程 (Runnables)。当每个子线程完成时,它需要引发一个事件(或类似的东西)并向父线程返回一个通知。我在 Java (ala C#) 中看不到任何事件 - 我曾希望我可以在父对象中订阅子对象的“我完成事件”,但似乎我做不到。你建议我如何做到这一点?
谢谢
【问题讨论】:
-
你可以加入一个线程,但这会阻塞直到线程完成。如果您可以让您的代码使用 Executor 框架,则另一个选项是让您的其他 Runnables 任务代替。然后,您重写
FutureTask类的done方法(通过您编写的子类)以发出任务完成的信号。 -
@Chris Jester-Young:这应该是一个答案,而不是评论。
-
@MalcomTucker 您应该为此目的使用 CoutnDownLatch...有关详细信息,请参阅我的答案。
-
@Aaron:通常我会发布它作为答案,但我不想花时间(因为我正在工作:-P)查找 Executor、FutureTask 的链接,等等,这就是我通常写我的答案的方式。所以,我想我会快速提示其他人可以接受并运行。 :-)(请随时将我的评论充实为真正的答案。我不介意。)
标签: java multithreading events