package com.wqx.lang;
public class VolatileBoolean extends Thread{
private boolean b = true;
@Override
public void run() {
while(b){
System.out.println(b);
}
System.out.println("run 结束");
}
public static void main(String[] args) throws InterruptedException {
VolatileBoolean volatileBoolean = new VolatileBoolean();
volatileBoolean.start();
Thread.sleep(1000);
volatileBoolean.b = false;
System.out.println("设置 false");
Thread.sleep(1000);
}
}
为什么线程会被停止,按道理说没有加volatile,线程内存中的b应该还是true才对?
把System.out.println(b);去掉线程又不能够停止,有人能够说明一下为什么会出现这样状况