乙個多執行緒下的單例項實現故障

2022-09-12 08:12:12 字數 562 閱讀 5722

最近在asp.net專案中碰到的乙個問題。

乙個編碼器模組使用單例項實現,結果碰到了編碼id重複的異常。

public class idgenerator

return single;}}

protected idgenerator()

......

}

仔細看了**,只可能是多執行緒環境下,建立例項的問題。兩個執行緒同時執行到這一句:

if (null == single)

就可能建立兩個例項。雖然機率很小,不過init()操作中會有一些讀資料庫的耗時操作,asp.net服務啟動之後,某個網頁同時被兩個人訪問,可能就會觸發這個異常。

上網查到微軟官方的一篇文件,肯定了我的推斷:implementing singleton in c#

合理的單例項實現應該是:

public sealed class singleton

public static singleton instance

}return instance;}}

}

C 乙個簡單多執行緒的例項

很多初學者聽到執行緒會覺得晦澀難懂,很多資料一堆專有名詞也是讓人心煩意亂,本著學習加分享的態度,這裡做乙個簡單的例項分享幫助初學者們初識多執行緒。首先大概講述一下多執行緒和多程序的區別,任務管理器裡各種不同的程序就是多程序,或者是你同時執行多個 exe 程式就可以理解為多程序,多程序是要更多消耗cp...

多執行緒下建立單例例項的方式

單例模式裡有懶漢式和餓漢式,在多執行緒下需要用特殊的方式保證執行緒安全。下面我用一種方式實現餓漢式單例,兩種方式實現懶漢式單例 多執行緒下餓漢式單例 使用final修飾 防止子類覆蓋父類中的方法,破壞單例 public final class singleton implements seriali...

Python 實現乙個簡單的多執行緒

import threading def main str print str def create thread num,args threads for i in range num try t threading.thread target main,args args t.start exc...