当线程T1加入线程T2并且线程T2被中断时会发生什么?

3

我有一个情境,其中线程 T1 加入了线程 T2。当线程 T2 被中断时会发生什么,T1 会继续执行还是也会被中断。


2
嗨,为什么不尝试自己运行一下呢?你这样做会发生什么? - pinkpanther
1
中断是一个标志,从睡眠中唤醒后,它就像t2正常执行完一样。但你可以在5行代码中测试这个。 - user529543
2个回答

2

如果线程加入另一个线程,它会等待该线程“死亡”(根据规范)。因此,无论发生什么情况,如果第二个线程停止,等待的线程都将继续运行。

public final void join() throws InterruptedException

等待这个线程死亡。


2

如果使用join()方法等待线程T1结束,那么线程T1不一定会被中断,这和线程是否被中断没有关系。

"中断"并不意味着"终止",而join()方法等待线程终止。当线程被中断时,线程中的代码会决定发生什么。例如,线程可以选择捕获InterruptedException异常、忽略它并继续运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接