java Thread 关于调用interrupt后抛出InterruptedException异常的一点解读

本人就不上代码了,我觉得我说的不上代码大家也能懂。

首先,大家得先知道一个点,线程中会有一个中断标记的boolean值,记录当前线程是否打断,这只是一个标记值,并不会实际影响程序的运行,如果需要中断线程,需要自己手动操作。

我自己初始化了A,B两个线程,A线程循环每2秒睡眠一次。B线程调用A线程的引用,执行interrupt方法,B想打断A这个线程,A线程的中断标记值设为true。

这时A线程会抛出InterruptedException异常,抛出异常后中断标记值会立即设为false。这里大家需要注意,B的本意是要打断A,让它中断,但你抛出异常后立即把中断标记设为了false,这相当于擅自改变了B的本意,所以需要在catch的代码块中加一行代码:Thread.currentThread().interrupt();来保证A线程的中断标记为true,是B想要的中断状态。

这只是一种规范操作,实际情况应该自己把握。

上一篇:分页控件之分页算法 —— for SQL Server 版。


下一篇:断言NSAssert的使用