各位大神好,
java中不是不允许一个线程无原因的(没有发生assign)把数据从线程的工作内存同步到主内存中 为什么会线程会停止呢
为什么我把: //System.out.println(isRunning);注释掉线程就不会结束,而不注释掉线程就会结束,有什么区别吗?
public class _08volatile01 extends Thread {
private boolean isRunning=true;
private void setRunning(boolean isRunning){
this.isRunning=isRunning;
}
@Override
public void run() {
System.out.println("进入run方法");
System.out.println(isRunning);
while(isRunning==true){
//System.out.println(isRunning);
}
System.out.println("线程终止");
}
public static void main(String[] args) throws InterruptedException {
boolean flag=true;
_08volatile01 rt=new _08volatile01();
rt.start();
Thread.sleep(3000);
rt.isRunning=false;
System.out.println("isRunning的值已经设置了false");
Thread.sleep(1000);
System.out.println(rt.isRunning);
}
}