Interrupt到底是什么意思
比如说:以下线程中run的一点代码
try {
this.interrupt();//-----------------------1
System.out.println("after interrupt")://--------------2
sleeper.join();//------------------------3
} catch(InterruptedException e) {
print("Interrupted");
}我本来的理解为当程序执行到每1句的时候下面两句就不会执行,结果确实也没有执行,但是,既然第三句没有执行,那为什么还会抛出interruptedException?
难道这个interruptedException到底是什么时候抛出来的?
比如说:以下线程中run的一点代码
try {
this.interrupt();//-----------------------1
System.out.println("after interrupt")://--------------2
sleeper.join();//------------------------3
} catch(InterruptedException e) {
print("Interrupted");
}我本来的理解为当程序执行到每1句的时候下面两句就不会执行,结果确实也没有执行,但是,既然第三句没有执行,那为什么还会抛出interruptedException?
难道这个interruptedException到底是什么时候抛出来的?
楼主代码其实线程还在运行
补充:
InterruptedException 是在执行join时抛出的. 因为线程已经Interrupt所以join操作不可能再执行下去了.你可以再试试加个after join的提示, 它一定是输不出来的.
如果interrupt没有中断一个线程的话(好像是做了一个interrupt标记)为什么第二句
System.out.println("after interrupt")://--------------2
也没有执行输出。如果说连第2句都没执行到的到,线程又怎么执行到第3句
sleeper.join();//------------------------3
的?既然没执行到第3句的话,程序怎么知道“线程受到阻塞”的?是不是跟异常处理机制有关?