【发布时间】:2016-01-20 16:38:11
【问题描述】:
以下代码创建一个新的 costum Thread 并等待线程结束,然后主线程才再次激活。
- 我不太明白它是如何工作的。为什么不立即调用
mythread.wait();? -
为什么不改用
Thread.join()?public static void main(String[] args) {
Thread mythread = new MyThread("hello"); mythread.start(); synchronized (mythread) { try { mythread.wait(); } catch (InterruptedException e) { } } }
【问题讨论】:
-
没有
MyThread类的代码很难说... -
你可以忽略实现。这只是一个线程在做一些“工作”(基本上会睡几秒钟,就是这样)
-
那么,实际上,我预计这段代码会无限期地阻塞,因为没有人可以调用
mythread.notify()。但我认为程序在 Linux 系统上完成,因为“虚假唤醒”:stackoverflow.com/questions/1050592/…. -
@VictorSorokin 这不是虚假的唤醒。看我的回答。
-
如果您想等待线程完成,请致电
t.join()。如果你想启动一个线程,然后立即加入它而不做任何事情,那有什么意义呢?为什么还要费心使用线程?
标签: java multithreading