8 线程安全且高效的单例模式
(1)雙檢查
if(instance ==?null){//一次檢查 ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ????
synchronized?(MySingleton.class)?{
if(instance?==?null){//二次檢查 ?? ? ? ? ? ? ? ? ? ? ? ?
instance?=?new?MySingleton(); ?? ? ? ? ? ? ? ? ? ?
} ?? ? ? ? ? ? ? ?
} ?? ? ? ? ? ?
?(2)靜態代碼塊
private?static?MySingleton?instance?=?null; ?
private?MySingleton(){}
static{ ?? ? ? ?
instance?=?new?MySingleton(); ?? ?
}
public?static?MySingleton?getInstance()?{ ?
return?instance; ?? ?
}
(3)靜態內置類
private?static?class?MySingletonHandler{ ?? ? ? ??
private?static?MySingleton?instance?=?new?MySingleton(); ?
}?
private?MySingleton(){}
public?static?MySingleton?getInstance() { ?
return?MySingletonHandler.instance; ?
} ?
(4)枚舉類型
public?enum?EnumFactory{ ??? ? ??? ?
singletonFactory;
private?MySingleton?instance; private?EnumFactory(){//枚舉類的構造方法在類加載是被實例化 ?? ? ? ?
instance?=?new?MySingleton(); ?? ?
} ?
public?MySingleton?getInstance(){ ?
return?instance; ?
} ?
} ?
class?MySingleton{//需要獲實現單例的類,比如數據庫連接Connection ?
public?MySingleton(){} ??
} ?
轉載于:https://www.cnblogs.com/JaneSJ/p/5915291.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的8 线程安全且高效的单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VM虚拟机 安装OS X 错误vcpu-
- 下一篇: 在连续发布版本的情况下 如何做好测试?