美文网首页
利用JVM类初始化实现线程安全的单例生成

利用JVM类初始化实现线程安全的单例生成

作者: 守住阳光 | 来源:发表于2018-09-28 19:01 被阅读0次

            实现线程安全的单例模式有多种方案,最常见的是使用 synchronized 关键字。但是这种方案在线程竞争激烈时开销比较大。今天介绍利用JVM类初始化的方式来实现单例模式。

            jvm在进行类初始化时,为了保证线程安全,会提供在类初始化锁,保证该类只会被初始化一次。我们可以利用此特性来实现线程安全的单例模式。话不多说,亮出代码:

    public class PoolMannager{

            private static class createPool{

                   private static MyPoolImpl poolImpl = new MyPoolImpl ();

            }

            public static MyPoolImpl  getInstance(){

                    return createPool.poolImpl ;

            }

    }

    代码实现逻辑:

            1、定义一个内部类,其中一个属性是需要创建的类的实例,注意使用static修饰;

            2、定义返回的单例的方法,方法体中通过 内部类.单例对象属性 的方式返回单例对象。

            内部类.单例对象属性,对静态属性的访问会触发对内部类的初始化,而类的初始化是线程安全的,所以利用此机制能保证线程安全地返回单例对象。

    相关文章

      网友评论

          本文标题:利用JVM类初始化实现线程安全的单例生成

          本文链接:https://www.haomeiwen.com/subject/ruapoftx.html