0
点赞
收藏
分享

微信扫一扫

如何正确停止线程

小布_cvg 2022-02-12 阅读 113

如何正确停止线程

如何正确停止线程

  1. 不推荐使用jdk提供的stop()、destroy()方法。这些是jdk已经废弃的方法。
  2. 不建议死循环,推荐线程自己停下来。
  3. 建议使用一个标志位作为线程种植变量,当flag=false,线程停止运行。

代码

package testthread;

public class StopThread implements Runnable {

    //1.线程中定义线程体使用的终止标识
    private Boolean flag = true;

    @Override
    public void run() {

        //2.线程体使用该标识
        while (flag) {
            System.out.println("thread running...");
        }
    }

    //3.对外提供改变终止标识的方法
    public void stop() {
        this.flag = false;
    }
}
 

测试

package testthread;

public class StopThread implements Runnable {

    //1.线程中定义线程体使用的终止标识
    private Boolean flag = true;

    @Override
    public void run() {

        //2.线程体使用该标识
        while (flag) {
            System.out.println(Thread.currentThread().getName() + "running..." + System.currentTimeMillis());
        }
    }

    //3.对外提供改变终止标识的方法
    public void stop() {
        this.flag = false;
    }

    public static void main(String[] args) {
        StopThread stopThread = new StopThread();
        new Thread(stopThread, "工作线程").start();

        for (int i = 0; i < 20; i++) {
            System.out.println("main线程" + i);
            if (i == 10) {
                stopThread.stop();
                System.out.println("工作线程停止");
            }
        }
    }
}

结果输出

main线程0
工作线程running...1644562067378
main线程1
工作线程running...1644562067378
main线程2
main线程3
工作线程running...1644562067378
main线程4
工作线程running...1644562067378
main线程5
工作线程running...1644562067378
main线程6
工作线程running...1644562067378
main线程7
工作线程running...1644562067378
main线程8
工作线程running...1644562067378
main线程9
工作线程running...1644562067378
main线程10
工作线程running...1644562067379
工作线程停止
main线程11
main线程12
main线程13
main线程14
main线程15
main线程16
main线程17
main线程18
main线程19

Process finished with exit code 0
举报

相关推荐

0 条评论