像这样的代码
测试二的情况
一是有易变关键字,可以停止
另一种是无volatile,线程无限循环
public class VolatileTest extends Thread {
public boolean flag = false;
public static void main(String[] args) throws InterruptedException {
VolatileTest volatileTest = new VolatileTest();
volatileTest.start();
Thread.sleep(1000);
volatileTest.flag = true;
}
@Override
public void run() {
while (!flag) {
System.out.println("=====>");
}
}
}
1条答案
按热度按时间uyto3xhc1#
我的错。问题是你打电话给
synchronized
while循环中的方法。像这样试试。Stopped
除非你重新申报否则不会打印flag
作为volatile
.