synchronized
特性
原子性,可見(jiàn)性,有序性
1.原子性
javap -v Class01_Sync_Test.class
2.可見(jiàn)性
運(yùn)行在內(nèi)存中的數(shù)據(jù),運(yùn)行在CPU中的數(shù)據(jù)。ABA問(wèn)題

ABA問(wèn)題.png
ABA問(wèn)題可以使用volatile來(lái)解決
3.有序性
CPU會(huì)對(duì)指令進(jìn)行重排序,例如一個(gè)對(duì)象的創(chuàng)建過(guò)程:
申請(qǐng)空間,初始化,賦值給變量。但是如果指令優(yōu)化成申請(qǐng)空間,賦值給變量,初始化就可能導(dǎo)致另一個(gè)線程在使用的時(shí)候發(fā)現(xiàn)對(duì)象內(nèi)的數(shù)據(jù)是null的。尤其是在單例模式下。
解決方法:volatile可以保存指令不被優(yōu)化