多线程 - 中断操作:jdk 提供的中断方法被弃用,自定义实现

线程中断方法被弃用,如果要实现该功能需要手动实现,一种思路是定义一个布尔值变量(对外提供方法修改变量值)每次做业务都要判断该,如果为 true 说明不需要停止,如果为 false 就停止

class MyThread2 implements Runnable{

    // 定义一个变量, 用于控制停止线程
    private boolean flag = true;

    public boolean getFlag() {
        return flag;
    }
    // 对外提供修改值的方法
    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    @Override
    public void run() {
        // 循环获取变量 flag 值, 如果是 true 就执行
        while (this.getFlag()){
            System.out.println("flag 为真,不需要停止...");
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
public class Test2 {

    public static void main(String[] args) throws InterruptedException {
        MyThread2 myThread2 = new MyThread2();
        new Thread(myThread2).start();

        // 两秒后停止线程
        Thread.sleep(2000);
        myThread2.setFlag(false);
    }

}
posted @ 2023-05-24 16:02  CyrusHuang  阅读(15)  评论(0编辑  收藏  举报