Java单例设计模式的两种实现方式
来源:互联网 发布:2016年网络作家排行榜 编辑:程序博客网 时间:2024/05/22 08:06
分为两种:懒汉式和饿汉式
饿汉式:
package single;/** * 单例设计模式:饿汉式 * * @author Administrator * */public class Single { /** * 初始化并且私有,静态,因为下面方法要返回生成的实例, * 但是只有静态才能调用静态资源,否则会报错。 * 因此此处需要添加static修饰 * final:让new出来的实例锁住,防止线程安全问题 */ private static final Single SINGLE = new Single(); /** 私有构造 */ private Single(){} /** * 返回创建的实例对象 * * @return 实例对象 */ public static Single getInstance(){ return SINGLE; }}
懒汉式:
package single;/** * 单例设计模式:懒汉式 * * @author Administrator * */public class Single { /** * 初始化实例对象 * 此处不能添加finale修饰 * 如果被修饰,那么single就不能被赋值 */ private static Single SINGLE = null; /** 私有构造方法 */ private Single(){} /** * 返回创建的实例对象 * 如果多个线程同时进来,并且同时卡到A点 * 那么就不会达到单例,因此需要加synchronized * * @return 创建的实例对象 */ public static synchronized Single getInstance(){ if(SINGLE == null) // A点 { return new Single(); } return SINGLE; }}
懒汉式优化(主要面试):
package single;/** * 单例设计模式:懒汉式 * * @author Administrator * */public class Single { /** * 初始化实例对象 * 此处不能添加finale修饰 * 如果被修饰,那么single就不能被赋值 */ private static Single SINGLE = null; /** 私有构造方法 */ private Single(){} /** * 返回创建的实例对象 * 线程A拿到锁,到达C点 sleep了 * 线程B进来了到达A点,有锁,进不去, * 线程A醒来之后,创建实例,返回 * 线程C到达D点判断,进不去,直接返回 * 线程D到达D点判断,进不去,直接返回 * 。。。。 * * * 这样就减少了判断锁的次数 * * 锁:因为程序都是静态实现,在调用方法的时候并没有this * 因此使用当前文件的.class文件 * * @return 实例对象 */ public static Single getInstance(){ // D点 if(SINGLE == null) { // A点 synchronized (Single.class) { // B点 if(SINGLE==null){ // C点 return new Single(); } } } return SINGLE; }}
阅读全文
1 0
- Java单例设计模式的两种实现方式
- 【java】单例模式的两种实现方式
- 设计模式之单例模式的作用以及两种实现方式
- 单例模式(java两种方式实现)
- 单例设计模式的两种方式
- 单例模式两种实现方式
- 单例模式的两种较好的实现方式
- 单例模式的两种实现方式及区别
- ios单例模式实现的两种方式
- 单例模式的两种实现方式
- 单例模式的两种实现方式
- 单例模式--Singleton的两种实现方式
- java中单例设计模式的两种实现方式
- 单例设计模式的两种实现
- JAVA设计模式-单例模式(Singleton)的五种实现方式
- 单例模式的两种方式
- 单例模式的两种方式
- 单例模式的两种方式
- OpenCV010:以左右摄像头的拍摄图片为基础生成深度图
- 设计模式-外观模式
- Netty源码分析(七)—Recycler对象池分析
- Kalman滤波(一)
- Xposed框架初次见面-开发自己的Xposed插件
- Java单例设计模式的两种实现方式
- 使用const常量定义π,输出球的体积和表面积,球的半径r由键盘输入!
- CTF密码学(Crypto)一些在线解密网站
- CNN网络介绍与实践-王者荣耀英雄图片识别
- 使用cmake自动构建工程
- 一日一文(6)
- 4、WebDriver API
- Apache Maven 2 简介
- OpenCV011:调用本地左右摄像头拍照并保存到指定路径