Java多線程-synchronized

是什麼

synchronized是Java中實現線程同步的一種手段,底層是通過鎖機制實現的。

怎麼用

對象鎖

一個對象實例中,一個線程,一個synchronized方法。
在某個對象實例內,synchronized aMethod(){}可防止多個線程同時訪問這個對象的synchronized方法。如果一個對象有多個synchronized方法,只要一個線程訪問了其中的一個synchronized方法,其他線程不能同時訪問這個對象任何一個synchronized方法。此時,是可以訪問相同類其他對象實例中的synchronized方法。

類鎖

該類所有對象中,一個線程,一個synchronized方法。
在某個類的範圍內,synchronized static aStaticMethod{}可防止多個線程同時訪問這個類中的synchronized static方法。它對類的所有對象實例起作用。

塊鎖

synchronized關鍵字作用與方法中某個區域塊內的代碼時,就是塊鎖。表示只對這個區域塊的資源實行互斥訪問。用法是:synchronized(lockObj){/代碼塊/}。

特性

  1. 不能繼承。父類的synchronized方法在子類中並不自動是synchronized修飾的。
  2. 必須是對象。synchronized(lockObj){},此處的lockObj必須是引用類型,不能是基本類型。

參考
https://blog.csdn.net/Evankaka/article/details/44153709
https://www.cnblogs.com/blueSkyline/p/8598099.html

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