剑指 offer set 28 实现 Singleton 模式
生活随笔
收集整理的這篇文章主要介紹了
剑指 offer set 28 实现 Singleton 模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
singleton 模式又稱單例模式, 它能夠保證只有一個(gè)實(shí)例. 在多線程環(huán)境中, 需要小心設(shè)計(jì), 防止兩個(gè)線程同時(shí)創(chuàng)建兩個(gè)實(shí)例.
?
解法
1. 能在多線程中工作但效率不高
public sealed class Singleton2 {private Singleton2() {}private static readonly object synObj = new object();private static Singleton2 instance = NULL;public static Singleton2 instance {get{lock(synObj) {if(instance == NULL)instance = new Singleton2();}return instance;}} }
上段代碼低效在于每次獲取 instance 時(shí)都會(huì)試圖加上同步鎖, 而加鎖本身比較耗時(shí), 應(yīng)該盡量避免.
改進(jìn)的方法是在加鎖之前另外加一層判斷
if(instance == NULL)
總結(jié)
以上是生活随笔為你收集整理的剑指 offer set 28 实现 Singleton 模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP目录
- 下一篇: 动态执行c# 脚本片段