并发编程-volatile和synchronized的区别
生活随笔
收集整理的這篇文章主要介紹了
并发编程-volatile和synchronized的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 使用上的區別
Volatile只能修飾變量,synchronized只能修飾方法和語句塊
?2. 對原子性的保證
synchronized可以保證原子性,Volatile不能保證原子性
?3. 對可見性的保證
都可以保證可見性,但實現原理不同
Volatile對變量加了lock,synchronized使用monitorEnter和monitorexit? monitor? JVM
?4. 對有序性的保證
Volatile能保證有序,synchronized可以保證有序性,但是代價(重量級)并發退化到串行
?5. 其他
synchronized會引起線程阻塞
volatitle不會引起線程阻塞
轉載于:https://www.cnblogs.com/yintingting/p/11427002.html
總結
以上是生活随笔為你收集整理的并发编程-volatile和synchronized的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并发编程-java内存模型
- 下一篇: 并发编程-CAS