diff --git "a/notes/JavaArchitecture/03-Java\345\271\266\345\217\221\347\274\226\347\250\213.md" "b/notes/JavaArchitecture/03-Java\345\271\266\345\217\221\347\274\226\347\250\213.md" index 9aa02eac..4e0fb922 100644 --- "a/notes/JavaArchitecture/03-Java\345\271\266\345\217\221\347\274\226\347\250\213.md" +++ "b/notes/JavaArchitecture/03-Java\345\271\266\345\217\221\347\274\226\347\250\213.md" @@ -2937,7 +2937,7 @@ synchronized 不仅保证可见性,而且还保证原子性,因为,只有   在代码中如果过度依赖 volatile 变量来控制状态的可见性,通常会比使用锁的代码更脆弱,也更难以理解。仅当 volatile 变量能简化代码的实现以及对同步策略的验证时,才应该使用它。一般来说,用同步机制会更安全些。 - - volatile 无法同时保证内存可见性和原则性: + - volatile 无法同时保证内存可见性和原子性:   加锁机制(即同步机制)既可以确保可见性又可以确保原子性,而 volatile 变量只能确保可见性,原因是声明为volatile的简单变量如果当前值与该变量以前的值相关,那么 volatile 关键字不起作用,也就是说如下的表达式都不是原子操作:“count++”、“count = count+1”。 @@ -3368,4 +3368,4 @@ https://blog.csdn.net/zbw18297786698/article/details/53420780 # 更新日志 -- 2018/9/2 v3.0 \ No newline at end of file +- 2018/9/2 v3.0