为什么下面代码子线程无法中断run方法中的while循环?
题目描述
如题
题目来源及自己的思路
子线程修改condition值为false,run方法while循环终止。
相关代码
粘贴代码文本(请勿用截图)
public class VisibilityDemo {
private static volatile boolean condition = true;
static void run() {
while (condition) {
// do something
System.out.println("...");
}
System.out.println("退出");
}
public static void main(String[] args) {
run();
new Thread(() -> {
condition = false;
}).start();
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
期待:打印一段".."后打印"退出"。实际:持续打印"..",不会打印"退出"。
回复
1个回答
test
2024-06-25
run 不结束,不会执行到后面的 new Thread 。而 run 不会结束。
你可以把 run 也放到一个线程中去。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容