在这段代码中,两个join和break是什么意思? t1.join()
导致 t2
停止直到 t1
终止?
Thread t1 = new Thread(new EventThread("e1"));
t1.start();
Thread t2 = new Thread(new EventThread("e2"));
t2.start();
while (true) {
try {
t1.join();
t2.join();
break;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
最佳答案
What does this thread join code mean?
引用 Thread.join()
method javadocs :
join()
Waits for this thread to die.
有一个线程正在运行您的示例代码,它可能是 main thread .
- 主线程创建并启动
t1
和t2
线程。两个线程开始并行运行。 - 主线程调用
t1.join()
等待t1
线程完成。 t1
线程完成,t1.join()
方法在主线程中返回。请注意,t1
可能在join()
调用之前已经完成,在这种情况下join()
调用将立即返回。<- 主线程调用
t2.join()
等待t2
线程完成。 t2
线程完成(或者它可能在t1
线程完成之前完成)并且t2.join()
方法返回主线程。
了解 t1
和 t2
线程一直在并行运行很重要,但启动它们的主线程需要等待让他们在继续之前完成。这是一种常见的模式。此外,t1
和/或 t2
可以在主线程调用 join()
之前完成。如果是这样,那么 join()
不会等待,而是会立即返回。
t1.join()
means cause t2 to stop until t1 terminates?
没有。正在调用 t1.join()
的 main 线程将停止运行并等待 t1
线程完成。 t2
线程并行运行,完全不受 t1
或 t1.join()
调用的影响。
在 try/catch 方面,join()
抛出 InterruptedException
意味着调用 join()
的主线程可能本身被另一个线程中断。
while (true) {
在 while
循环中加入连接是一种奇怪的模式。通常,您会执行第一次连接,然后在每种情况下适本地处理 InterruptedException
的第二次连接。无需将它们置于循环中。
关于java - 这个线程连接代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956231/