volatile和synchronized的相關內容

volatile和synchronized扮演者重要的角色。

volatile
volatile是輕量級的synchronized,它保證了共享變量的可見性(當一個線程修改一個共享變量時,另一個線程可以讀到這個修改的值)。如果volatile變量修飾符使用的恰當,比synchronize的使用和執行成本更低。

synchronized
synchronized是重量級鎖,他不僅保證了可見性,還保證了原子性。

利用synchronized實現同步的具體表現爲3種形式:
1.對於同步方法,鎖是當前實例對象。
2.對於靜態同步方法,鎖是當前類的Class對象。
3.對於同步方法塊,鎖是Synchronized括號裏配置的對象。

Sychronized支持重入鎖, Sychronized A裏面可以調用Sychronized B方法,重入鎖另外一種情形,子類鎖調用父類鎖。
被sychronized鎖定的代碼塊越少同步效率就越高.

其他相關內容:
當一個線程試圖訪問同步代碼塊時,它首先必須得到鎖,退出或拋出異常時必須釋放鎖。
程序運行中如果碰到異常,那麼鎖默認會被釋放.所以在高併發處理的過程中,有異常要考慮清楚
wait/notify/notifyall 必須作用於同一個對象才能達到目的,調用wait會進入等待並且釋放鎖,調用notify則不會。
調用wait前必須進行Synchronized操作,要麼會拋異常 IllegalMonitorStateException(非法監控狀態異常)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章