關於synchronized的三個簡單例項

2021-06-19 18:13:48 字數 833 閱讀 9913

第一種:

public

class singleton2 ;  

private

static singleton2 instance = null;  

public

static singleton2 getinstance()  

return instance;  

}  }  

這種情況未加鎖,可能會產生資料錯誤,比如兩個同時新生成的物件,乙個把物件資料改變了,而另乙個使用的沒改變之前的

第二種:

public

class singleton1   

private

static singleton1 instance = null;  

public

static singleton1 getinstance2()   

}  }  

return instance;  

}  }  

這種只會在第一次的時候產生阻塞,之後每例項一次物件,就會在第1步時跳過去,在第一次例項的時候,會在第2步那裡產生阻塞,以後就不會了,這種相對來說是最好的

第三種:

public

class singleton1   

private

static singleton1 instance = null;  

public

static

synchronized singleton1 getinstance()  

return instance;  

}  }  

多執行緒的時候每次都會在1這裡產生阻塞。

關於java的synchronized關鍵字

synchronized最關鍵的就是確定鎖的物件,我認為有兩種,類和物件 對類的加鎖有兩種方法 1.public synchronized static void fun 在靜態方法前加上synchronized關鍵字。2.synchronized 類名.class 將加鎖的 塊的鎖的位置,寫上類物...

關於synchronized失效wenti

國慶前公司的 做了一波活動,導致平時流水五六千的 在9月30日的一天流水暴漲到近40w,隨之而來的就是一波大坑。簡單介紹一下業務場景,乙個 系統,乙個發碼系統。是賣電子券的,使用者在 購買卡券,系統就會呼叫發碼系統給客戶進行發碼 簡訊形式 然後把傳送的碼返回給 系統存入卡包。我們有部分 的券碼是購買...

iOS 中關於 synchronized的一點思考

首先我們知道 synchronized 的作用是建立乙個互斥鎖,保證此時沒有其它執行緒對鎖物件進行修改。這個是objective c的乙個鎖定令牌,防止鎖物件在同一時間內被其它執行緒訪問,起到執行緒的保護作用。指令 synchronized 通過對一段 的使用進行加鎖。其他試圖執行該段 的執行緒都會...