synchronized線程
一、原子性(同步)(保證同一時間內同步塊內的代碼只能被一個線程所訪問)內存
二、內存可見性(當共享變量值改變後,能及時被其餘線程看見)同步
注: 變量
線程解鎖前,必須把共享變量的最新值刷新到主內存中時間
線程加鎖時,將清空工做內存中共享變量的值,從而使用共享變量時須要從主內存中從新讀取最新的值(加鎖和解鎖須要同一把鎖)sync
volatile工作
一、線程每次使用volatile變量時,它都強迫線程從主內存中讀取最新的值synchronized
二、當volatile變量的值發生改變的時候,它就會強迫線程把最新的值刷新到主內存中volatile