题目描述
我个人理解对于标志位停止线程,就是让线程中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();
}
}
}
}
你理解的是对的。
run()
执行完线程就退出了,你这里用while
维持了一个死循环来阻止线程退出;当while
条件不满足时循环终止、run
代码也就执行完了,继而线程退出。