当线程完成设置后,如何让线程告诉启动它的方法?

发布于 2024-11-02 00:01:26 字数 88 浏览 4 评论 0原文

我有一个启动线程的方法,并且我希望该方法阻塞,直到线程完成其设置阶段,否则将面临竞争条件。

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

落墨 2024-11-09 00:01:26

我通常使用 倒计时闩锁如果只有启动线程需要等待。

那里有一些例子,但如果您需要的话,我可以举一个快速的例子。

或者,您可以使用 屏障 如果多个线程很可能会使用线程并且需要知道它何时被初始化。

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.

倒数 2024-11-09 00:01:26

将“设置阶段”从 run() 移出并移至 init() 方法中。

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

编辑:或者正如@Buhb在下面的评论中指出的那样,只需将其放入构造函数中即可。多年的 C++ 经验让旧习惯很难改掉。

Move your "setup stage" out of run() and into an init() method.

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

Edit: Or as @Buhb noted in the comments below, just put it in the constructor. Years of C++ makes old habits die hard.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文