java使用标志位停止线程是什么意思?

image.png

题目描述

我个人理解对于标志位停止线程,就是让线程中run()方法里面的代码不再执行。不知道这个理解对不对?

相关代码

粘贴代码文本(请勿用截图)

public class StatusThread implements Runnable {
    private boolean flag = true;

    @Override
    public void run() {
        int i = 0;
        while (flag) {
            System.out.println("线程该停止了" + i++);
        }
    }

    public void stop() {
        this.flag = false;
    }

    public static void main(String[] args) {
        StatusThread statusThread = new StatusThread();
        new Thread(statusThread).start();
        for (int i = 0; i < 1000; i++) {
            System.out.println(i);
            if (i == 666) {
                statusThread.stop();
            }
        }
    }
}

你期待的结果是什么?

image.png

阅读 1.7k
1 个回答

你理解的是对的。

run() 执行完线程就退出了,你这里用 while 维持了一个死循环来阻止线程退出;当 while 条件不满足时循环终止、 run 代码也就执行完了,继而线程退出。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题