school-boy 2016-12-06 05:09 采纳率: 0%
浏览 1031

线程与主内存之间的可见性问题

各位大神好,
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);

    }
    }
  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2016-12-06 13:54
    关注
    我认为程序是否终结跟循环里面这行代码是否注释掉没有关系,而是你的main函数在指定时间后将运行标识置为false了,程序中有两个线程main线程和你自定义的线程。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题