單例模式與方法的同步非同步

2022-01-12 21:58:46 字數 885 閱讀 2044

新增乙個log記錄工具類,將每天的log資訊分別記入新建的文字檔案中。(要求自己寫乙個簡單實現,不借助第三方類庫)。

首先想法:應log工具類需要訪問文字資源,將其設計為單例模式,以避免多執行緒訪問同一資源報異常。

public class textlogger

return _instance;

}} private textlogger()

}public void writelog(string message)

}catch

}}

class synchelper

", datetime.now);

thread.sleep(5000);

}}

main函式

class program

, null, 0, 1000);

console.read();

}}

執行發現,每個1s列印異常而非5s。在execute()方法上新增attribute執行緒鎖[methodimpl(methodimploptions.synchronized)]在執行發現輸出將為5s。

所以最簡單的解決方法:在textlogger.writelog方法上新增[methodimpl(methodimploptions.synchronized)]

參考自[methodimpl(methodimploptions.synchronized)]、lock(this)與lock(typeof(...))

about單例設計模式 同步

一 單利設計模式 乙個類只能有乙個例項的情況下多採用單例設計模式,這個類在內部定義乙個私有的例項,然後向外界提供呼叫它的方法。常見形式 1 餓漢式 常用方式 class single public static single getinstance 2 懶漢式 延遲載入 class single p...

JAVA執行緒的同步方法和單例模式執行緒安全筆記

開始時間 2018年8月12日20 09 02 結束時間 2018年8月12日22 44 44 累計時間 2小時 原因 操作同乙個資料中間切換的時候,乙個執行緒操作共享資料的時候,未執行完的情況下 另外的執行緒參與進來,導致安全問題。解決方案 乙個執行緒操作共享資料完畢之後,其他執行緒才可以操作。比...

單例模式的實現方法

單例模式的實現大概有5中方式 1 餓漢式 2 懶漢式 3 雙重檢測鎖 4 靜態內部類 5 列舉 這裡我寫出了三種自己比較常用的用法 餓漢式的寫法如下,餓漢式是在類初始化的時就載入了,是執行緒安全的,呼叫效率也很高,但是缺點是不能延時載入,不能做到要用的時候才建立。public class singl...