Java中有那几种引用

2018-09-21  本文已影响17人  erki_stwee

https://blog.csdn.net/cselmu9/article/details/51366946

Java中有哪几种引用?它们的含义和区别是什么?

请用Java实现一个线程安全且高效的单例模式。

Java中有哪几种引用?它们的含义和区别是什么?

请用Java实现一个线程安全且高效的单例模式

造成不安全的原因

public class MySingleTon {

    public static MySingleTon getInstance() {
        return MySingleHolder.instance;
    }

    private MySingleTon() {
    }

    private static class MySingleHolder {
        private static MySingleTon instance = new MySingleTon();
    }

}

2)双重校验

public class MySingleTon implements Serializable {

    private static final long serialVersionUID = 1L;
    private static volatile MySingleTon instance;

    public static MySingleTon getInstance() {
        if (instance == null) {
            synchronized (MySingleTon.class) {
                if (instance == null) {
                    instance = new MySingleTon();
                }
            }
        }
        return instance;
    }

    private MySingleTon() {
    }

    //反序列化的时候调用
    protected Object readResolve() throws ObjectStreamException {
        return instance;
    }

}
上一篇 下一篇

猜你喜欢

热点阅读