我有一个启动线程的方法,我希望在线程完成其设置阶段之前使用方法块,否则将面临竞争条件。
我知道我想使用wait notify,但我不知道如何拥有监视器等等。
答案 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 ++使旧习惯变得艰难。