原子性:同一時刻,隻有一個線程可以執行某段程式代碼(原子,意思代表——不可分)
可見性:一個線程對變量的寫操作對其他線程後續的讀操作可見
Volatile的最大缺點是不支援原子性。
差別
1. volatile是線程同步的輕量級實作,是以性能比synchronized好。但是volatile隻能修飾變量,synchronized可以修飾變量、代碼塊、方法(volatile保證變量可見性,synchronized保證代碼塊可見性)。
2. volatile用于解決變量多線程之間的可見性,synchronized是解決多線程之間通路資源的同步性。
3. 多線程通路volatile不會發生阻塞,synchronized會出現阻塞