看了一段程序,大概是spring定时任务,自动执行一段代码,为了线程安全加了锁。
贴一段代码:
List> hashMapList = null;
IsCompleteClient isCompleteClient = new IsCompleteClient();
synchronized (mutexLock) {
hashMapList = isCompleteClient.notifyResult();
}
想知道锁一个空的mutexLock对象的目的是什么?
不应该是:
IsCompleteClient isCompleteClient = new IsCompleteClient();
synchronized (isCompleteClient) {
list = isCompleteClient.notifyResult();请问两种写法有什么区别?
关于java的synchronized问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- Zedee 2016-11-11 03:41关注
http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html
里面说到了上面的这个例子比原文给出的例子要好一些,因为原文中的加锁是针对类定义的,一个类只能有一个类定义,而同步的一般原理是应该尽量减小同步的粒度以到达更好的性能。笔者给出的范例的同步粒度比原文的要小。
解决 无用评论 打赏 举报