标签:tar 安全 static 设计模式之单例模式 comm 介绍 detail 静态 stat
java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
public class Singleton{
private Singleton(){}
private static Singleton insatnce=new Singleton();
public static Singleton getInstance(){
return insatnce;
}
}
Singleton 类只有一个构造函数,它被private修饰,客户无法创建该类的实例。
此实现是线程安全的,这是因为当JVM在加载此类时,对于static属性的初始化只能由一个线程执行且只执行一次。
//懒汉式单例类.在第一次调用的时候实例化自己
懒汉式单例的实现没有考虑线程安全问题,它是线程不安全的,并发环境下很可能出现多个Singleton实例,要实现线程安全,有以下三种方式,都是对getInstance这个方法改造,保证了懒汉式单例的线程安全。
1、在getInstance方法上加同步
但是加synchronized会使得性能大不如前。
2、双重检查锁定
private volatile static Singleton single=null;
代码解释
3、静态内部类
当JVM加载Singleton时,由于此类没有static,所以加载完成后就返回,只有在第一次调用getInstance时,JVM才会加载LazyHolder类,才会初始化Singleton。
标签:tar 安全 static 设计模式之单例模式 comm 介绍 detail 静态 stat
原文地址:http://www.cnblogs.com/xiaolovewei/p/7727882.html