天明伴雨晴 2022-01-25 01:03 采纳率: 55.6%
浏览 54
已结题

java 缓存一致性问题

最近看书看到了java缓存一致性的问题 是这些了一段代码


```java
`static int val = 0;
    public static void main(String[] args) throws Exception{
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (val < 5){
                    if(val != 0 ){
                        System.out.println(val);
                    }
                }
                System.out.println("over");
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i = 0;i <5; i++){     ​
                   ​//val = i;//val ++;try {
                       ​TimeUnit.SECONDS.sleep(2);
                   ​} catch (InterruptedException e) {
                       ​e.printStackTrace();
                   ​}
               ​}
           ​}
       ​}).start();
   ​}

``
当第二条线程val ++ 注释去掉,第一个线程就能看见val的变化

当第二条线程val=i注释去掉,第一个线程就看不见val的变化陷入死循环

这是为什么

  • 写回答

2条回答 默认 最新

  • 日落西风又在吹 2022-01-25 10:04
    关注
    1. 变量不存在可见性,对于其他线程修改了,未刷新主内存并未通知工作线程重新获取到工作空间中
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)