饿汉方式:因为加载类的时候就创建实例,所以线程安全(多个ClassLoader存在时例外)。缺点是不能延时加载。
懒汉方式:需要加锁才能实现多线程同步,但是效率会降低。优点是延时加载。
静态内部类:延迟加载,减少内存开销。因为用到的时候才加载,避免了静态field在单例类加载时即进入到堆内存的permanent代而永远得不到回收的缺点。
一、饿汉式单例
二、懒汉式单例
三、单例模式嵌套类实现
public class InnerClassSingleton {
4.
5. private InnerClassSingleton(){};
6.
7. static class staticInnerSingle{
8. private static InnerClassSingleton instance = new InnerClassSingleton();
9. }
10.
11. public static InnerClassSingleton getInstance(){
12. return staticInnerSingle.instance;
13. }
14.}