Java内存可见性问题

Posted by Ariescat on March 18, 2019

java中的synchronized有2个作用

  1. 互斥访问

  2. 保证内存可见性

关于第二点,总是有点疑惑,看了很多资料,一般这么描述

  1. 在同一个锁上修改,读取共享变量,读线程总是可以获取最新变量值。

  2. 后面又有 这样的描述: 线程释放锁时会将强制刷新工作内存中的脏数据到主内存中,获取一个锁将强制线程装载(或重新装载)字段的值。

这里有个链接 http://ifeve.com/syn-jmm-visibility/

其他

其实如果不存在竞争关系的话,一个变量在不同的线程按顺序访问不存在可见性问题


喜迎
春节