各位大神好,
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);
}
}
我认为程序是否终结跟循环里面这行代码是否注释掉没有关系,而是你的main函数在指定时间后将运行标识置为false了,程序中有两个线程main线程和你自定义的线程。