多线程之单例模式
创始人
2025-06-01 16:16:19
0

目录

1.什么是单例模式

 2.单例模式的类型

3.饿汉模式

4.饿汉模式

5.多线程


1.什么是单例模式

单例模式是指内存中只会创建且仅创建一次对象的设计模式.单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象.

 2.单例模式的类型

饿汉模式:类内部把实例创建好,等待被程序使用,禁止外部重新创建实例

懒汉模式:在真正需要使用对象时去创建对象

3.饿汉模式

编码时就指明要马上创建对象,不要等到被调用时去创建

实现Singleton类步骤:

1.定义唯一实例本体

private是私有的,static是类的属性

JVM中,每个类对象只有一份

2.获取实例方法

因为不能在外部创建实例,所以要编写方法,用来调用唯一实例对象

3.禁止外部new实例

把构造方法的修饰符写为private

class Singleton{//唯一实例本体private static Singleton instance=new Singleton();//获取实例的方法public static Singleton getInstance(){return instance;}//禁止外部new实例private Singleton(){}
}

测试

public static void main(String[] args) {//s1,s2是同一个对象Singleton s1=Singleton.getInstance();Singleton s2=Singleton.getInstance();//Singleton s3=new Singleton();error}

外部无论怎么调用都是一个对象,不能创建新的对象

4.饿汉模式

懒汉式创建对象的方法是在程序使用对象前,先判断该对象是否已经实例化(判空),若已实例化直接返回该类对象,否则则先执行实例化操作。

实现SingletonLazy类步骤:

1.定义实例

private是私有的,static是类的属性

JVM中,每个类对象只有一份

因为非必要不创建,所以实例对象为空

2.获取实例的方法

先判断该对象是否已经实例化(判空),若已实例化直接返回该类对象,否则则先执行实例化操作。

3.禁止外部new实例

把构造方法的修饰符写为private

class SingletonLazy{private static SingletonLazy instance=null;public static SingletonLazy getInstance(){if(instance==null){instance=new SingletonLazy();}return instance;}private SingletonLazy(){}
}

5.多线程

因为饿汉模式只有读,所以没有线程安全问题

但是懒汉模式有读有写,所以存在线程安全问题

就该问题解决办法

1.加锁,把if和new变成原子操作

2.双重if,减少不必要的加锁

3.使用volatile指令从排序,保证后序线程能拿到完整的对象

class SingletonLazy{volatile private static SingletonLazy instance=null;public static SingletonLazy getInstance(){if(instance==null){//两个或多个线程同时看到后,满足继续,不满足返回instancesynchronized(SingletonLazy.class){if(instance==null){//一个线程进入,另一个线程就不会进入instance=new SingletonLazy();}}}return instance;}

相关内容

热门资讯

家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...
中国军视网:日本妄言击沉福建舰... 本文转自【中国军视网】; 日本首相高市早苗发表涉台错误言论,公然挑战一个中国原则,甚至还有日本无知政...
重磅!东莞长安50万㎡产城发布... 在当下竞争激烈的市场环境中,中小企业如何突破成本压力,找到一片既能扎根成长又能眺望未来的理想栖息地?...
毕马威:政策、资本等多维着力 ... 由毕马威联合长三角G60科创走廊创新研究中心主办的“长三角高端装备新质领袖榜单发布仪式”于11月21...
河曲县开展驻村帮扶工作政策业务... 来源:河曲县融媒体中心 近日,我县组织开展驻村帮扶工作政策业务集中培训,进一步提升驻村帮扶干部...
羽绒服涨价与猪肉降价有关?经济... 中央气象台发布统计信息,14日至17日,我国今年下半年首轮大范围寒潮天气即将自西向东影响我国,多地降...
周勇,任上落马 11月21日,中央纪委国家监委网站发布通报: 国家能源集团乌海能源党委书记、董事长周勇涉嫌严重违纪违...