对象-对于Lock的以下几种方式,你觉得比较合适的是哪一个?为什么?

问题描述

对于Lock的以下几种方式,你觉得比较合适的是哪一个?为什么?

第一种
{
Object obj = new Object();
lock(obj)
{}
}
第二种
{
Object obj = new Object();
lock(typeof(obj))
{}
}
第三种
Private static Object obj = new Object();
{

lock(obj)
{}
}
第四种
{

lock(this)
{}
}

解决方案

msdn上说的很清楚
lock(this)
Private static Object obj = new Object();
lock(typeof(obj))
都是不可取的。

https://msdn.microsoft.com/zh-cn/library/c5kehkcz(VS.80).aspx

通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。常见的结构 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 违反此准则:
如果实例可以被公共访问,将出现 lock (this) 问题。
如果 MyType 可以被公共访问,将出现 lock (typeof (MyType)) 问题。
由于进程中使用同一字符串的任何其他代码将共享同一个锁,所以出现 lock(“myLock”) 问题。

这个问题提得很不应该,典型不动脑筋。

解决方案二:

线程同步几种方式的比较

解决方案三:

线程同步几种方式的比较

时间: 2024-09-17 03:47:43

对象-对于Lock的以下几种方式,你觉得比较合适的是哪一个?为什么?的相关文章

IOS开发:Unity3D 两种方式播放游戏视频

  Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象.如下图所示,MOMO将default_video.mp4拖拽入Project视图中,如果视频中含有音频的话会对应生成audio文件,因为我的视频没有音频所以没有生成 audio文件.接着在Hierarchy视图中创建一个Plane对象视频将在它之上播放,Directional light世界定向光用于照亮

javascript面向对象——定义类或对象的几种方式

从语言的视角看,面向对象的编程和面向对象的javascript绝对不是什么现代的东西:从刚开始javascript就被全面的设计为面向对象的语言 下面呢,就介绍一下,定义类或对象的几种方式: 1 工厂模式 代码如下 function createcar(iColor,iDoors,iMpg) { varoTemCar = new Object; oTemperCar.color = iColor; oTemperCar.doors = iDoors; oTempCar.mpg = iMpg; o

JS获取html对象的几种方式介绍

 这篇文章主要介绍了JS获取html对象的几种方式,有需要的朋友可以参考一下 document.getElementById("zx");   通过ID获取html元素对象,ID号在html文档当中应该是唯一的.返回的是唯一element对象.并且所有浏览器都兼容.   document.getElementsByTagName("span")[0];   通过标签查找html对象,由于html标签在一个页面中可能重复很多次,所以当前页面返回的是一个数组.可以根据标

Jquery 获取对象的几种方式介绍

  本文为大家介绍下Jquery如何获取对象有哪几种方式,感兴趣的朋友可以参考下 1.JQuery的核心的一些方法 each(callback) '就像循环 $("Element").length; '元素的个数,是个属性 $("Element").size(); '也是元素的个数,不过带括号是个方法 $("Element").get(); '某个元素在页面中的集合,以数组的形式存储 $("Element").get(inde

Struts2获取web对象的4种方式

Struts2获取web对象的4种方式 Struts2是如何获取web中 request.session.application的了,Struts2有4种方式获取web对象 1.通过ServletActionContext取HttpServletRequest对象 2.通过ServletRequestAware,(ServletResponseAware )来注入HttpServletRequest.(HttpServletResponse)对象 3.通过ActionContext取Map 4.

javascript面向对象之访问对象属性的两种方式分析_javascript技巧

本文实例分析了javascript面向对象之访问对象属性的两种方式.分享给大家供大家参考.具体如下: javascript面向对象的访问对象属性的两种方式.如下代码所示: 复制代码 代码如下: <script language="javascript" type="text/javascript"> function Person(){}; var p1 = new Person(); p1.name="王美人"; document.

javaScript中定义类或对象的五种方式总结_javascript技巧

第一种方式: 工厂方法 能创建并返回特定类型的对象的工厂函数(factory function). function createCar(sColor){ var oTempCar = new Object; oTempCar.color = sColor; oTempCar.showColor = function (){ alert(this.color); }; return oTempCar; } var oCar1 = createCar(); var oCar2 = createCa

详解springmvc 接收json对象的两种方式_javascript技巧

最近学习了springmvc 接收json对象的两种方式,现在整理出来,具体如下:  1.以实体类方式接收 前端 ajax 提交数据: function fAddObj() { var obj = {}; obj['objname'] = "obj"; obj['pid'] = 1 ; $.ajax({ url: 'admin/Obj/addObj.do', method: 'post', contentType: 'application/json', // 这句不加出现415错误:

WPF:将HTML RGB颜色值转化为Color对象的两种方式

原文:WPF:将HTML RGB颜色值转化为Color对象的两种方式  (1)方式一: Color color1 = (Color)System.Windows.Media.ColorConverter.ConvertFromString("#E0E0E0"); (2)方式二: Color color2 = ConvertToColor("#E0E0E0"); public static System.Windows.Media.Color ConvertToCol