单例设计模式-双重检查
生活随笔
收集整理的這篇文章主要介紹了
单例设计模式-双重检查
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
雙重檢查
雙重檢查應(yīng)用實(shí)例
代碼演示:
class Singleton{private static volatile Singleton singleton;private Singleton(){}// 提供一個(gè)靜態(tài)公有方法public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}// 同步代碼,效率是比較低的// 只是在判斷外就走過(guò)了}return instance;} }Java并發(fā)編程:volatile關(guān)鍵字解析
優(yōu)缺點(diǎn)說(shuō)明
double-check 概念是多線程開發(fā)中常使用到的,如代碼中所示,我們進(jìn)行了兩次
if(singleton == null)檢查,這樣就可以保證線程安全了
這樣,實(shí)例化代碼只用執(zhí)行一次,后面再次訪問(wèn)時(shí)候,判斷if(singleton==null),
直接return實(shí)例化對(duì)象,也避免的反復(fù)進(jìn)行方法同步.
線程安全;延遲加載;效率較高
結(jié)論:在實(shí)際開發(fā)中,推薦 使用這種單例設(shè)計(jì)模式
更多:http://victorfengming.gitee.io/design_pattern/
總結(jié)
以上是生活随笔為你收集整理的单例设计模式-双重检查的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数字IC手撕代码-格雷码的编码与解码
- 下一篇: 通过Himal项目学习掌握asp.net