- 關鍵字volatile是線程同步的輕量級實現,因此volatile性能比synchronized要好,volatile智能修飾變量,而synchronized能夠修飾方法以及代碼塊。隨着JDK新版發佈,synchronized關鍵字在執行效率上獲得很大提高,在開發中使用synchronized的機率仍是比較大的
- 多線程訪問volatile不會發生阻塞,而synchronized會出現阻塞。
- volatile能保證數據的可見性,可是不能保證原子性;而synchronized能夠保證原子性,也能夠間接保證可見性由於他將私有內存和公共內存中的數據作同步
volatile解決的是變量在多個線程間的可見性,synchronized解決的是多個線程間訪問資源的同步性多線程