java单例模式
1.饿汉模式:天生线程安全,类加载时创建(不好,不用的时候也被迫创建,占用一点点资源)
class Singleton {
//1.饿汉式:天生线程安全,类加载时创建(不好,不用的时候也被迫创建,占用一点点资源)
private static final Singleton instance=new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
2.懒汉模式:线程同步:使用时再创建,天生线程不安全(加锁);
class Singleton {
private static Singleton instance=null;
private Singleton(){
}
//线程同步:使用时再创建,天生线程不安全(加锁)
public synchronized static Singleton getInstance(){
if(instance ==null){
instance=new Singleton();
}
return instance;
}
}
- 懒汉式:用时再创建,天生线程安全
// 懒汉和饿汉模式的综合
class Singleton {
//1.静态代码块在类加载前执行
static {
System.out.println("Single static block");
}
private Singleton() {
}
static class Holder {
static final Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return null;
}
}