package lhh.fight.designpattern;
/**
* Description:单例模式,常见的有懒汉模式,饿汉模式,双重锁模式
* @author 李**2019年9月21日
*/
public class SingletonTest
{
public static void main(String[] args)
{
Singleton s1=
Singleton.getInstance();
Singleton s2=
Singleton.getInstance();
// 不能new一个Singleton因为构造函数不可见
// Singleton s3 = new Singleton();
System.out.println(s1==
s2);
}
}
class Singleton
{
/*//懒汉模式,线程不安全,延迟初始化
private static Singleton singleton;
private Singleton() {}
public static Singleton getInstance()
{
if(singleton == null) singleton = new Singleton();
return singleton;
}*/
/*//饿汉模式,线程安全,常用,易产生垃圾,一开始就初始化
private static Singleton singleton = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return singleton;
}*/
//双重锁模式,线程安全,延迟初始化
private volatile static Singleton singleton;
private Singleton() {}
public static Singleton getInstance()
{
if(singleton ==
null)
{
synchronized(Singleton.
class)
{
if(singleton==
null) singleton =
new Singleton();
}
}
return singleton;
}
}
转载于:https://www.cnblogs.com/lhh666/p/11568274.html
相关资源:JAVA上百实例源码以及开源项目
转载请注明原文地址: https://mac.8miu.com/read-53346.html