如何在完成设置时让线程告诉启动它的方法?

时间:2011-04-16 23:01:28

标签: java multithreading wait notify

我有一个启动线程的方法,我希望在线程完成其设置阶段之前使用方法块,否则将面临竞争条件。

我知道我想使用wait notify,但我不知道如何拥有监视器等等。

2 个答案:

答案 0 :(得分:5)

如果只有起始线程需要等待,我通常会使用Count down latch

有一些例子,但如果你需要,我可以举出一个简单的例子。

如果多个线程可能使用线程并且需要知道它何时被初始化,那么你可以使用barrier

答案 1 :(得分:4)

将“设置阶段”移出run()并进入init()方法。

MyRunnableClass mrc = new MyRunnableClass();
mrc.init();
Thread t = new Thread(mrc);
t.start();

编辑或者@Buhb在下面的评论中指出,只需将其放在构造函数中即可。多年的C ++使旧习惯变得艰难。