以singleton模式锁定(this)

本文关键字:this 锁定 singleton 模式 | 更新日期: 2023-09-27 17:57:53

在单例懒惰多线程实现中使用锁(this)而不是锁(lockObject)是好的实现吗?

示例:

    public class MedicineHelper
    {
        private static MedicineHelper medicineHelper;
        private MedicineHelper()
        {
        }
        public static MedicineHelper GetInstance()
        {
            if (medicineHelper == null)
            {
                lock (this)
                {
                    if (medicineHelper == null) medicineHelper = new MedicineHelper();
                }
            }
            return medicineHelper;
        }
    }

经典模式需要一个像这样的锁专用对象:

    public class MedicineHelper
    {
        private static MedicineHelper medicineHelper;
        private static Object lockObject = new Object();
        private MedicineHelper()
        {
        }
        public static MedicineHelper GetInstance()
        {
            if (medicineHelper == null)
            {
                lock (LockObject)
                {
                    if (medicineHelper == null) medicineHelper = new MedicineHelper();
                }
            }
            return medicineHelper;
        }
    }

以singleton模式锁定(this)

这不是一个好的实现,因为你做不到。"this"在静态方法中不可用。