二十二 synchronized同步方法

2022-04-11 22:32:30 字數 1280 閱讀 2765

一 synchronized鎖:

1 synchronized取得的鎖都是物件鎖,而不是把一段**或方法加鎖。

synchronized是給該方法的例項物件加鎖。如果多個執行緒訪問的是同乙個物件

的synchronized方法,就可以同步。

2 物件中的非synchronized型別的方法是不需要等待鎖的。

3 不同的synchronized方法之間也是互斥的,因為鎖的是物件!

二 synchronized鎖重入:

1 synchronized具有鎖重入的功能,同乙個執行緒可以多次獲得乙個物件的鎖。也就是說:乙個synchronized方法內部呼叫本類的其他synchronized方法時,是永遠             可以得到鎖的。

2 可重入鎖也支援在父子繼承的情況下。

3  出現異常情況,鎖自動釋放。當乙個執行緒執行的**出現異常時,其所有的鎖會自動釋放。

4 子類繼承父類的同步方法時,如果希望也是同步方法需要加上synchronized關鍵字。

三 synchronized同步語句塊

1控制的粒度更細緻,效率更高。

2 synchronized (this)

3 當乙個執行緒訪問object的乙個synchronized(this)同步**塊,其他執行緒對同一object中所有的其他synchronized(this)同步**塊的訪問都將被阻塞,說明synchronized使用的「物件監視器」是乙個。

四 將任意物件作為物件監視器

多個執行緒呼叫同乙個物件中的不同名稱的synchronzied同步方法或synchronzied(this)同步**塊時,呼叫的效果就是按順序執行,也就是同步,阻塞。

鎖非this物件的優點:比如乙個類中四個方法,方法1和2需要同步,方法3和4需要同步,這個時候就可以用非this的鎖,效率高。

五 靜態同步synchronized方法與synchronized(class)**塊

關鍵字synchronized還可以用在static靜態方法上,這樣寫,是對當前類加鎖。

類鎖可以對類的所有物件例項起作用。 

二十二,雜感

恩,二十二了,感覺是個turning point。二十二是中國男公民法定結婚年齡,但是因為我連女朋友都沒有,所以,這個話題暫不談論。其實剛到上海的時候,就準備把那些將要發生的辛酸點滴記錄下來,可是不知怎麼的,真正到辛酸的時候,卻不想去記憶了。那些歷程確實值得懷念,但是想起來就感覺不好,或許這就是所謂...

二十二 封裝

namespace demo7 this.age age this public int getage public void stuinfo 年齡為 方式一 public int age 方式二 private int age 字段 內部 public int age 讀取許可權 set 預設屬性...

HTML 頭部(二十二)

頭元素包含關於文件的概要資訊,也稱為元資訊 meta information meta 意為 關於某方面的資訊 可以這麼說,元資料 meta data 是關於資料的資訊,而元資訊是關於資訊的資訊。頭元素內的元素不會被瀏覽器顯示出來。根據 html 標準,僅有幾個標籤在 html 的頭部分是合法的。它...