实现线程安全的单例设计模式的三种方式:
- DCL双检查锁机制实现线程安全
- 使用静态内置类实现线程安全
- 使用static代码块实现线程安全
-----------------------------------------------------------------------------------------------------------------------------------
public class MyObject {
private static class MyObjectHandle {
private static MyObject myObject = new MyObject();
}
private MyObject(){
}
public static MyObject getInstance() {
return MyObjectHandle.myObject;
}
}
静态内置类可以达到线程安全,但是在序列化对象的情况下,还是会存在多例的问题。
public class MyObject implements Serializable{
private static class MyObjectHandle {
private static MyObject myObject = new MyObject();
}
private MyObject(){
}
public static MyObject getInstance() {
return MyObjectHandle.myObject;
}
}