线程的终止
通过JDK的文档我们可以找到中断线程的api是interrupt()
并且调用interrupted()方法可以判断当前的状态是否中断.
代码语言:javascript复制package com.zero.gaoji.no3.day01;
import java.util.concurrent.TimeUnit;
/**
* @Description: 中断线程的demo
* @Author: HuangLeTao
* @Date: 2020/7/1
*/
public class InterruptDemo {
private static int i;
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
i ;
}
System.out.println("i = " i);
}, "InterruptDemo");
t1.start();
TimeUnit.SECONDS.sleep(1);
t1.interrupt();
}
}
代码语言:javascript复制i = 255564253
简单了解上面的例子,创建一个线程 启动,睡眠一秒钟后中断该线程, 中断该线程之后, 通过isInterrupted()方法得到该线程的状态为true,这个时候会跳出while循环。
线程的复位
Thread可以通过interrupted()方法对线程进行复位。
代码语言:javascript复制package com.zero.gaoji.no3.day01;
import java.sql.Time;
import java.util.concurrent.TimeUnit;
/**
* @Description: 线程的复位
* @Author: HuangLeTao
* @Date: 2020/7/1
*/
public class InterruptedDemo {
private static int i ;
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
while(true) {
if (Thread.currentThread().isInterrupted()) {
System.out.println("复位");
Thread.interrupted(); // 复位
}
}
}, "InterruptedDemo");
t1.start();
TimeUnit.SECONDS.sleep(1);
t1.interrupt();
}
}