五种实现方式
1.饿汉式
1 | public class Singleton{ |
类加载的时候就会创建对象,只会创建一次,在多线程情况下仍然能保持唯一的实例。如果单例类占用比较大的内存,创建饿汉式就不是一个太好的选择
2.懒汉式
1 | public class Singleton{ |
需要的时候才实例化对象,实现了延缓加载,但是,在多线程中无法保证示例的唯一性。
加锁的懒汉式1
2
3
4
5
6
7
8
9
10
11
12
13
14public class Singleton{
private static Singleton instance;
private Singleton() {};
public static synchronized Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}