在Thread.join()之前调用Thread.interrupt()是否会导致join()立即抛出InterruptedException?


问题内容

基本上,问题标题怎么说。

Thread t = new Thread(someRunnable);
t.start();
t.interrupt();
t.join(); //does an InterruptedException get thrown immediately here?

从我自己的测试来看,但似乎只是想确定一下。我猜想在执行“等待”例程之前先Thread.join()检查interrupted线程的状态?


问题答案:

interrupt() 中断您中断的线程,而不是中断线程。

cf

Thread.currentThread().interrupt();
t.join(); // will throw InterruptedException