标签:线程 内部类 enum func 枚举类 ack 硬盘 oid 判断
1.饿汉式
优点:线程安全
缺点:立即加载
2.懒汉式
优点:懒加载
缺点:线程不安全(可以用双重锁机制来保证线程安全,但是调用效率低)
3.内部类型单例模式,前两种基本不用,因为这种包含前两种的优点
优点:1、线程安全,2、懒加载
代码如下:
package sington;
public class InnerSing {
private InnerSing(){
}
public static InnerSing getIntance(){
return InnerClass.instance;
}
private static class InnerClass {
private static InnerSing instance = new InnerSing();
}
}
4、枚举类
优点:前三种都没法避免使用反射/序列化(即写入硬盘再读取硬盘创建对象)来创建对象,
而枚举类可以;(其实可以通过构造器代码写:对象非空判断+抛错可以防止反射创建,而重写readResolve()方法可以防止反系列化构造多一个对象)
缺点:不是懒加载
代码如下:
package sington;
public enum EnumSing {
INTANCE;
public void function(){
System.out.println("具体执行方法");
}
public static EnumSing getIntance(){
return INTANCE;
}
}
标签:线程 内部类 enum func 枚举类 ack 硬盘 oid 判断
原文地址:https://www.cnblogs.com/yeyongjian/p/8904929.html