6 单例模式与多线程
6.3 使用静态内部类实现单例模式
public class MyObject {
private static class MyObjectHandler{
private static MyObject object = new MyObject();
}
private MyObject(){
}
public static MyObject getSingleton(){
return MyObjectHandler.object;
}
}
6.4 序列化与反序列化的单例模式实现
public class MyObject implements Serializable{
private static final long serialVersionUID = 888L;
private static class MyObjectHandler{
private static MyObject object = new MyObject();
}
private MyObject(){
}
public MyObject getSingletonInstance(){
return MyObjectHandler.object;
}
protected Object readResolve() throws ObjectStreamException{
System.out.println("调用了readResolve()方法");
return MyObjectHandler.object;
}
}
6.6 使用enum枚举类型实现单例模式
枚举enum和静态代码块的特征相似,使用枚举类时,构造方法会被自动调用。