单例模式设计

技术单例模式设计 单例模式设计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)

相关推荐

  • JVM内存查看的三种途径分别是什么

    技术JVM内存查看的三种途径分别是什么本篇文章给大家分享的是有关JVM内存查看的三种途径分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通常情况下可

    攻略 2021年10月23日
  • DIV+CSS网页内容显示不完整诊断是这样的

    技术DIV+CSS网页内容显示不完整诊断是这样的DIV+CSS网页内容显示不完整诊断是这样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。本文和大家重点

    攻略 2021年11月11日
  • 怎么使用Android banner

    技术怎么使用Android banner本篇内容主要讲解“怎么使用Android banner”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Android banne

    攻略 2021年11月9日
  • 1813. 句子相似性 III

    技术1813. 句子相似性 III 1813. 句子相似性 III先把每个句子分成一个个单词
    然后比较即可,设置flag1、flag2,如果第一次出现不一样flag = 1,之后若一样flag2 = 1

    礼包 2021年12月9日
  • 国际象棋怎么玩,磁石国际象棋磁性折叠怎么玩儿

    技术国际象棋怎么玩,磁石国际象棋磁性折叠怎么玩儿棋子和棋盘国际象棋由黑白两棋组成国际象棋怎么玩,执白先行,国际象棋的对局目的是把对方的国王将死。以下三点如果全行不通,国王就算将死:
    1.挡住“将军”的局势
    2.离开“将军

    生活 2021年10月23日
  • 怎么理解JavaScript数据双向绑定

    技术怎么理解JavaScript数据双向绑定本篇内容介绍了“怎么理解JavaScript数据双向绑定”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大

    攻略 2021年11月15日