单例模式设计

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

相关推荐

  • 抖音刷赞推广平台便宜,全网最便宜的平台!

    技术抖音刷赞推广平台便宜,全网最便宜的平台!抖音快速涨粉方法抖音无疑是目前新媒体里面涨粉最容易,涨粉最快的平台了。前有成都小甜甜一夜涨粉500万,后有灵魂当铺一天涨粉75万。这种涨粉速度在其他平台是想都不敢想象的。不过,

    测评 2021年11月9日
  • Linux字符设备控制怎么实现

    技术Linux字符设备控制怎么实现本篇内容介绍了“Linux字符设备控制怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有

    攻略 2021年11月23日
  • Java JUC多线程的Fork Join Pool怎么使用

    技术Java JUC多线程的Fork Join Pool怎么使用这篇文章主要介绍“Java JUC多线程的Fork Join Pool怎么使用”,在日常操作中,相信很多人在Java JUC多线程的Fork Join Po

    攻略 2021年11月24日
  • jquery sibling是什么

    技术jquery sibling是什么这篇文章主要讲解了“jquery sibling是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery sibling是什

    攻略 2021年11月15日
  • 程序员是怎么阅读源码的

    技术程序员是怎么阅读源码的本篇内容介绍了“程序员是怎么阅读源码的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!React

    攻略 2021年10月22日
  • 刷墙面漆步骤,房子的墙面怎么刷涂料,详细步骤

    技术刷墙面漆步骤,房子的墙面怎么刷涂料,详细步骤墙面刷涂料的粉刷大致分为以下几个步骤:1.处理墙面基层刷墙面漆步骤;2.涂刷界面剂;3.防水处理;4.刮腻子;5.砂纸打磨;6.刷油漆。 1. 处理墙面基层
    墙面基层处理

    生活 2021年10月25日