中断机制之通过volatile实现线程中断停止

如何停止中断运行中的线程?

首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,自己来决定自己的命运,所以,Thread.stop,Thread.suspend,Thread.resume都已经被废弃了

volatile实现线程中断演示

通过修改共享变量的方式 来达到通知的目的 从而使目的线程中断

package com.kwfruit.thread.interruptdemo;

import com.kwfruit.thread.common.SleepUtil;

import java.util.concurrent.TimeUnit;

public class InterruptDemo {

    static volatile boolean isStop = false;

    public static void main(String[] args) {

        new Thread(()->{

            while (true){

                if(isStop){
                    System.out.println(Thread.currentThread().getName()+"\t isStop被修改为true 程序停止");
                    break;
                }

                System.out.println("t1 --------hello volatile");

            }


        },"t1").start();

        try {
            TimeUnit.MICROSECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        new Thread(()->{

            isStop = true;


        },"t2").start();



    }


}

posted @ 2024-01-21 15:20  KwFruit  阅读(23)  评论(0编辑  收藏  举报