whichstar 2017-06-03 15:54 采纳率: 50%
浏览 842

多线程volatile的相关问题

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);去掉线程又不能够停止,有人能够说明一下为什么会出现这样状况

  • 写回答

2条回答 默认 最新

  • qq_21741507 2017-06-03 17:19
    关注

    线程安全呀,用volatile跟类型对应原子类型或者直接用锁

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器