线程的终止与复位

2020-07-07 10:10:54 浏览数 (2)

线程的终止

通过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();

    }

}

0 人点赞