Java 设计模式之单例模式详解
来源:互联网 发布:web网站数据分析 编辑:程序博客网 时间:2024/05/16 05:20
1.定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供整个实例。
2.单例模式通用代码如下
第一种方式:饿汉式单例
public class Singleton {private static final Singleton singleton=new Singleton();//private构造函数确保了一个在一个应用中只产生了一个实例//并且是自行实例化的(new Singleton())private Singleton(){}public static Singleton getSingleton(){return singleton;}//类中其他方法,尽量为static}
第二种方式:懒汉式单例
package com.yy.singleton;/** * * 单例模式:一个类只有一个实例,对外提供获取实例的方法 * */public class Singleton {private static Singleton instance = null;private Singleton(){}/** * 此种实现方式在多线程下失效 * @return */public static Singleton getInstance(){if(instance == null){instance = new Singleton();}return instance;}/** * 此种实现方式解决了多线程下单例失效问题,但是每次执行此方法时都会受到同步锁的限制,效率打了折扣 * @return */public synchronized static Singleton getInstance1(){if(instance == null){instance = new Singleton();}return instance;}/** * 此种实现方式与上面的相同,只是把synchronized移到方法体内 * @return */public static Singleton getInstance2(){synchronized (Singleton.class) {if(instance == null){instance = new Singleton();}}return instance;}/** * 双重锁定(Double-Check Locking) * 当instance不为空时,就不会进入synchronized代码块。 * 此种实现方式避免了每次调用都进行同步控制,只有instance在第一次构造时需要同步 * @return */public static Singleton getInstance3(){if(instance == null){synchronized (Singleton.class) {if(instance == null){instance = new Singleton();}}}return instance;}}最后一种方法使用了双重锁机制,可以提高性能。
- Java 设计模式之单例模式详解
- java设计模式(一)之单例模式详解
- Java设计模式之五(单例模式详解)
- Java设计模式(一) 之 详解单例模式
- Java 设计模式之单例模式详解
- 【JAVA设计模式】之单例模式详解
- Java设计模式详解之单例模式
- java设计模式之单例模式详解
- 设计模式之单例模式详解
- 设计模式详解之单例模式
- 设计模式详解之单例模式
- 【Java设计模式单例模式详解】
- JAVA模式设计-单例模式 详解
- 详解Java设计模式:单例模式
- java设计模式详解----------单例模式
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- 深入剖析Linux内核定时器实现机制
- OpenCV
- Sth about java security
- SQL Server中常用全局变量和函数
- Linux内核中的jiffies
- Java 设计模式之单例模式详解
- C++ common knowledge notes (2)
- Apk文件结构简介【轉載】
- SharePoint 2010中新增的GetItemByIdSelectedFields方法
- 内存DC和屏幕DC
- typeof()的用法
- 如何成功的面试到一位好的技术人员?
- 信号
- 实现单链表插入排序