饿汉式
public class Singleton {
//构造函数私有
private Singleton() {
}
//定义静态实例对象
private static Singleton instance=new Singleton();
/**
* 饿汉式
* @return
*/
public static Singleton getSingleton() {
return instance;
}
}
懒汉式
public class Singleton1 {
private Singleton1() {
}
private static volatile Singleton1 instance;
//同步代码块 双重检查加锁
public static Singleton1 getInstance() {
if(instance==null) {
synchronized(Singleton1.class){
if(instance==null) {
instance=new Singleton1();//指令重排序
}
}
}
return instance;
}
//同步方法 偏向锁
public static synchronized Singleton1 getInstance1() {
if(instance==null) {
instance=new Singleton1();
}
return instance;
}
}