如何停止线程?

停止线程的思路

1、Thread类中有stop方法,但是这种方法本质上是不安全的,而且在API中已经将这个方法标记为过期方法。
2、设置一个线程执行的判断条件,同时使用interrupt()来一起终止线程。
(interrupt()的作用:将阻塞状态的线程变为中断,但是线程并没有死亡。如果想要线程死亡,必须用判断条件阻止线程执行run方法)

package cn.zyyyx.demo;

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

class Stop extends Thread {
    private boolean flag = true;
    @Override
    public synchronized void run() {
        while (flag){
            try {
                wait();
            } catch (InterruptedException e) {
                toFalse();
            }
            System.out.println(getName()+"当前线程正在执行!");
        }
    }
    public void toFalse(){
        this.flag = false;
    }
}

public class StopThread {
    public static void main(String[] args) throws InterruptedException {
        Stop stop = new Stop();
        stop.setName("紫炎易霄");
        Stop stop1 = new Stop();
        stop1.setName("萧逸");
        //开启线程
        stop.start();
        stop1.start();
        /**
         * 让线程执行一段时间
         */
        for (int i = 0; i < 10; i++) {
            Thread.sleep(10);
        }
        //中断线程
        stop.interrupt();
        stop1.interrupt();
    }
}


猜你喜欢

转载自blog.csdn.net/qq_37630321/article/details/88072958