Java适用于高并发的单例模式

本文介绍了一种通过将 synchronized 关键字置于 mInstance 初始化条件中来实现线程安全的单例模式,避免每次调用 getInstance 方法时都需要进行同步操作,从而提高效率。实现了高并发情况下的单例对象安全创建。
摘要由CSDN通过智能技术生成

    将synchronized放在 if ( mInstance == null ) 而不直接添加在getInstance方法上,是避免每次都同步该方法而导致的效率低下,当mInstance初始化过后则不需要同步。保证了效率。简单实现如下: 

package com.umeng.dp.singleton;

/**
 * @Copyright: Umeng.com, Ltd. Copyright 2011-2015, All rights reserved
 * @Title: ThreadSingleton.java
 * @Package com.umeng.dp.singleton
 * @Description: 线程安全的单例模式, synchronized放在mInstance == null条件中保证高并发。
 * @author Honghui He
 * @version V1.0
 */

public class ThreadSingleton {

    private static volatile ThreadSingleton mInstance = null;

    /**
     * @Title: ThreadSingleton
     * @Description: ThreadSingleton Constructor
     */
    private ThreadSingleton() {
    }

    /**
     * @Title: getInstance
     * @Description: 获取实例
     * @return 返回单例
     * @throws
     */
    public static ThreadSingleton getInstance() {
        if (mInstance == null) {
            synchronized (ThreadSingleton.class) {
                if ( mInstance == null ) {
                     mInstance = new ThreadSingleton();   }
            }
        }
        return mInstance;
    }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值