侯明

0 声望

这家伙太懒,什么都没留下

个人动态
  • 半兽人 回复 侯明volatile关键字解析 - java并发 中 :

    你的说法没问题,线程2有可能拿到空的contxt。原因与此文一样。

    6年前
  • 侯明volatile关键字解析 - java并发 发表评论:
    volatilebooleaninited =false;
    //线程1:
    context = loadContext(); 
    inited =true;           
    //线程2:
    while(!inited ){
    sleep()
    }
    doSomethingwithconfig(context);
    

    你好,请问对于该例子,volatile变量保证了在线程1中对inited变量修改后,线程2中该变量失效,需要从新从主内存中读取inited变量的值,此时线程2跳出循环,需要context,可是context并没有从主内存中重新读取(如果原来context已经在该线程的缓存中,这里会把线程1的缓存中的context写到主内存再写到线程2的缓存吗?),这里会有问题吗?

    6年前