单例模式设计

技术单例模式设计 单例模式设计1、饿汉式/*** 饿汉式:直接创建对象,不管你是否需要,都会创建这个对象;** 1、构造器私有化* 2、自动创建,并且用静态保存* 3、向外提供这个实例* 4、强调这是一

单例模式设计

1、饿汉式

/**

* 饿汉式:直接创建对象,不管你是否需要,都会创建这个对象;

*

* 1、构造器私有化

* 2、自动创建,并且用静态保存

* 3、向外提供这个实例

* 4、强调这是一个单利模式,可以用最后的修饰

*/

公共类单线1 {

私有single on1(){ 0

}

公共静态最终single on1 INSTANCE=new single on1();

}

2、枚举

/**

* 枚举类型:表示该类型的对象是有限的几个,

* 我们定义成一个,就成了单利模式

*/

公共枚举单例2

情况

}

3、适用于初始化比较复杂的实例

/**

* 适用于初始化比较复杂的实例;

*/

公共类单线3 {

公共静态最终单线实例3

私有单例3(){ 0

}

静态{

//此处初始化其他数据;

INSTANCE=new Singlet 3();

}

}

4、懒汉式

/**

* 懒汉式:延迟创建这个实例对象;

*

* 1、构造器私有化

* 2、用一个静态变量保存这个唯一的实例;

* 3、提供一个静态方法,获取这个实例;

*/

公共类单线4 {

私有静态单身4实例;

私有single 4(){ 0

}

公共静态singleton 4 getInstance(){ 0

如果(实例==null){ 0

//线程。睡眠(100);此处睡眠,若两个线程同时进入,会创建两个对象

instance=new singleton 4();

}

返回实例;

}

}

/**

* 懒汉式:延迟创建这个实例对象;

*

* 1、构造器私有化

* 2、用一个静态变量保存这个唯一的实例;

* 3、提供一个静态方法,获取这个实例;

*/

公共类单线5 {

私有静态单线5实例;

私有singleton 5(){ 0

}

公共静态singleton 5 getInstance(){ 0

同步(单线5 .类){ 0

如果(实例==null){ 0

尝试{

//此处睡眠,若两个线程同时进入,会创建两个对象

线。睡眠(1000);

} catch(中断异常){ e

e。print stack trace();

}

instance=new singleton 5();

}

}

返回实例;

}

}

5、内部类的方式

//在内部类加载的时候才会创建对象情况

//静态内部类不会自动随着外部类的加载和初始化而初始化,他是单独去加载和初始化的;

公共类单线图6 {

私有singleton 6(){ 0

}

私有静态类内部{//内部类

私有静态最终singleton 6 INSTANCE=new singleton 6();

}

公共静态singleton 6 getInstance(){ 0

回归内心实例.

}

}

6、双端检索机制(DCL)

公共类单线图2 {

公共静态易失性单线态二氧化硅实例=null

私有singletondemo 2(){ 0

系统。出去。println(' single ondemo 2 ');

}

//DCL(双端检索机制)

公共静态SingletonDemo2 getInstance(){//由于指令重排机制,不一定100%线程安全

如果(实例==null){ 0

已同步(singletondemo 2。类){ 0

如果(实例==null){ 0

instance=new single ondemo 2();

}

}

}

返回实例;

}

公共静态void main(String[]参数){ 0

for(int I=0;i 1000I){ 0

新线程(()-{ 0

getInstance();

},String.valueOf(i)).start();

}

}

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154992.html

(0)

相关推荐

  • 五行属土的字,求所有五行属“土”的汉字

    技术五行属土的字,求所有五行属“土”的汉字土部 土 二至三画 玍 去 圣 圩 圬 圭 寺 在 至 尘 圪 老 考 圳 圾 圹 圮 圯 地 场 四画 坛 坏 坜 址 坚 坝 坐 坌 坋 圻 坂 均 坍 坎 坞 坟 坊 坑

    生活 2021年10月23日
  • Python中的变量怎么赋值

    技术Python中的变量怎么赋值这篇文章主要讲解了“Python中的变量怎么赋值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的变量怎么赋值”吧!1 Pyt

    攻略 2021年12月10日
  • VB.NET如何使用On Error语句

    技术VB.NET如何使用On Error语句这篇文章主要介绍VB.NET如何使用On Error语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VB.NET推荐使用Try...End Try块来

    攻略 2021年12月2日
  • ssh-keygen参数(公钥默认写入ssh目录下的什么文件)

    技术ssh-keygen的公钥格式是什么样的这篇文章给大家介绍ssh-keygen的公钥格式是什么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ssh-keygen 公钥格式公钥:公钥有2种格式

    攻略 2021年12月24日
  • oracle 11.2.0.4 path 26925576 报错怎么办

    技术oracle 11.2.0.4 path 26925576 报错怎么办本篇文章给大家分享的是有关oracle 11.2.0.4 path 26925576 报错怎么办,小编觉得挺实用的,因此分享给大家学习,希望大家阅

    攻略 2021年11月12日
  • 垂耳兔为什么不吉利,养垂耳兔要注意什么问题

    技术垂耳兔为什么不吉利,养垂耳兔要注意什么问题我养的就是垂耳兔,说要注意什么的,我其实还真没特别注意,我养了两年,到现在一点儿病没有生过,平时都吃兔粮,但是兔粮营养成分不太跟的上,建议不要单一的吃兔粮,所以我后面加了各种

    生活 2021年10月22日