interrupted()是Java提供的一种中断机制,要把中断搞清楚,还是得先系统性了解下什么是中断机制。
什么是中断?
在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的机制——中断。
中断只是一种协作机制,Java没有给中断增加任何语法,中断的过程完全需要程序员自己实现。若要中断一个线程,你需要手动调用该线程的interrupted方法,==该方法也仅仅是将线程对象的中断标识设成true;==接着你需要自己写代码不断地检测当前线程的标识位;如果为true,表示别的线程要求这条线程中断,此时究竟该做什么需要你自己写代码实现。
每个线程对象中都有一个标识,用于表示线程是否被中断;该标识位为true表示中断,为false表示未中断;
通过调用线程对象的interrupt方法将该线程的标识位设为true;可以在别的线程中调用,也可以在自己的线程中调用。
中断的相关方法
public void interrupt()
将调用者线程的中断状态设为true。
public boolean isInterrupted()
判断调用者线程的中断状态。
public static boolean interrupted()
只能通过Thread.interrupted()调用。
它会做两步操作:
- 返回当前线程的中断状态;
- 将当前线程的中断状态设为false;
如何使用中断?
要使用中断,首先需要在可能会发生中断的线程中不断监听中断状态,一旦发生中断,就执行相应的中断处理代码。
当需要中断线程时,调用该线程对象的interrupt函数即可。
1.设置中断监听
Thread t1 = new Thr