大家好,我是walker
一个从文科自学转行的程序员~
爱好编程,偶尔写写编程文章和生活
欢迎关注公众号【I am Walker】,回复“电子书”,就可以获得200多本编程相关电子书哈~
我的gitee:https://gitee.com/shen-chuhao/walker.git 里面很多技术案例!
isInterrupted
查看当前中断信号是true还是false
interrupt
- 用于中断线程。
- 调用该方法的线程的状态为将被置为**”中断”状态**。
注意:
- 线程中断仅仅是置线程的中断状态位,不会停止线程。
- 需要用户自己去监视线程的状态为并做处理。
- 支持线程中断的方法(也就是线程中断后会抛出interruptedException 的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就会抛出中断异常。
案例:一般而言,interrupt是和isInterrupted进行结合使用的,interrupt进行中断,然后isInterrupted判断中断的状态,来进行状态的判断,然后做对应的逻辑处理
package stopThread;
public class InterruptTest {
static class MyThread extends Thread{
@Override
public void run() {
/**
* isInterrupted 获取线程的中断状态
*/
boolean interrupted = isInterrupted();
//如果没有中断则执行,如果中断了则输出中断
while(!interrupted){
System.out.println("未中断,执行");
}
System.out.println("中断,不执行");
}
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
/**
* 这里只是将状态设置为中断位而已,不会将直接停止线程,因此要结合条件判断进行使用
*/
myThread.interrupt();
}
}
interrupted
- 是静态方法,查看当前中断信号是true还是false并且清除中断信号。
- 如果一个线程被中断了,第一次调用 interrupted 则返回 true,第二次和后面的就返回 false 了。