当线程完成设置后,如何让线程告诉启动它的方法?
我有一个启动线程的方法,并且我希望该方法阻塞,直到线程完成其设置阶段,否则将面临竞争条件。
我知道我想使用等待通知,但我不知道如何拥有监视器等等。
I have a method that starts a thread, and I want to have the method block until the thread finishes its setup stage, or else face a race condition.
I know I want to use wait notify, but I don't know how to own the monitor and so on.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我通常使用 倒计时闩锁如果只有启动线程需要等待。
那里有一些例子,但如果您需要的话,我可以举一个快速的例子。
或者,您可以使用 屏障 如果多个线程很可能会使用线程并且需要知道它何时被初始化。
I generally use a Count down latch if only the starting thread needs to wait.
There are examples there but I can throw up a quicky example if you need it.
Or you could use a barrier if multiple threads are likely to use thread and need to know when it is initialized.
将“设置阶段”从
run()
移出并移至init()
方法中。编辑:或者正如@Buhb在下面的评论中指出的那样,只需将其放入构造函数中即可。多年的 C++ 经验让旧习惯很难改掉。
Move your "setup stage" out of
run()
and into aninit()
method.Edit: Or as @Buhb noted in the comments below, just put it in the constructor. Years of C++ makes old habits die hard.