首先,大家得先知道一个点,线程中会有一个中断标记的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想要的中断状态。

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

来自:https://blog.csdn.net/suchengbin3433/article/details/88053210

posted on 2020-06-05 16:16  毛会懂  阅读(990)  评论(0编辑  收藏  举报