黑马程序员技术交流社区
标题:
synchronized放在函数内,与放在方法签名中有什么区别?
[打印本页]
作者:
szsycwb
时间:
2014-5-19 22:01
标题:
synchronized放在函数内,与放在方法签名中有什么区别?
本帖最后由 szsycwb 于 2014-5-20 12:54 编辑
public static synchronized Single getInstance()
{
if(instance==null)
instance=new Single();
return instance;
}
复制代码
-------------------------------------------------------------------------------------------------
public static Single getInstance()
{
if(instance==null)
synchronized(Single.class)
{
if(instance==null)
instance=new Single();
}
return instance;
}
复制代码
效率哪个比较好,有什么区别、
作者:
莫问纷飞
时间:
2014-5-19 22:18
同步函数使用的固定锁this。
同步代码块使用的锁是可以指定的。
JDK1.5以后出现了更好的方案
Lock接口替代了synchronized
Condition接口替代了Object中的监视方法,并将监视器方法封装成了Condition
和以前不同的是,以前一个锁上只能有一组监视器方法。现在,一个Lock锁上可以多组监视器方法对象。
作者:
郝义涛
时间:
2014-5-19 23:48
#下面方法更高效,因为当多个线程同时访问getInstance()方法时,第一种方法每次都得判断锁,但是第二种方法只有在不为空时,在进行锁判断,更高效#
作者:
jsjchenlong
时间:
2014-5-20 07:44
支持2楼的答案
作者:
lvc
时间:
2014-5-20 16:32
支持2楼
作者:
阿布Yocan
时间:
2014-5-20 19:24
第一个是同步函数,第二个是同步代码块,还在学习中
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2