以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;
}
}
这不是一个好的实现,因为你做不到。"this"在静态方法中不可用。