线程的interrupt和stop区别,以及线程的中断机制
interrupt
在Java里面线程的中断是一个协作式的,也就是说线程会在自己合适的时候自己中断自己,一般来讲线程如果需要中断的话有如下两种方法:
- 捕获InterruptException
- 通过Thread的
interrupted()
或者isInterrupted()
方法,但是需要注意的是interrupted
会清除这个线程的状态
当一个线程调用另一个线程的interrupt
的时候,另一个线程并不会马上结束,而是会设置一个中断的状态,如果一个线程处于阻塞的状态,那么此时该线程会马上抛出一个InterruptException,由上层的代码进行处理。
若线程没有处于阻塞的话,此时线程还是会执行的。但是线程需要自己在合适的地方通过上述的两个方法来判断自己是否应该中断。如果自己