如何写好一个单例,并且考虑了线程安全?

来源:互联网 发布:java 指定jdk 编辑:程序博客网 时间:2024/05/17 07:13

推荐写法:



public class TestSington {    private static TestSington instance;    public static TestSington getIntance() {        return Holder.instance;    }    public void init() {        // dosomething    }    private static class Holder {        static TestSington instance = new TestSington();        static {            instance.init();        }    }}

init函数适用于某些单例初始化需要参数配置的情况,若该单例的构造函数在初始化时需要参数,也可在static块中进行配置;

原理是利用了static第一次访问时必定会加载的运行机制结果,这样可以保证线程安全并在第一次getInstance时初始化,并省略了synchronized,节约资源;

阅读全文
0 0
原创粉丝点击