java synchronized VS volatile

synchronized線程

一、原子性(同步)(保證同一時間內同步塊內的代碼只能被一個線程所訪問)內存

二、內存可見性(當共享變量值改變後,能及時被其餘線程看見)同步

注: 變量

    線程解鎖前,必須把共享變量的最新值刷新到主內存中時間

    線程加鎖時,將清空工做內存中共享變量的值,從而使用共享變量時須要從主內存中從新讀取最新的值(加鎖和解鎖須要同一把鎖)sync


volatile工作

一、線程每次使用volatile變量時,它都強迫線程從主內存中讀取最新的值synchronized

二、當volatile變量的值發生改變的時候,它就會強迫線程把最新的值刷新到主內存中volatile

相關文章
相關標籤/搜索