cavaliers37 2016-11-11 03:35 采纳率: 0%
浏览 891
已结题

关于java的synchronized问题

看了一段程序,大概是spring定时任务,自动执行一段代码,为了线程安全加了锁。
贴一段代码:
List> hashMapList = null;
IsCompleteClient isCompleteClient = new IsCompleteClient();
synchronized (mutexLock) {
hashMapList = isCompleteClient.notifyResult();
}
想知道锁一个空的mutexLock对象的目的是什么?
不应该是:
IsCompleteClient isCompleteClient = new IsCompleteClient();
synchronized (isCompleteClient) {
list = isCompleteClient.notifyResult();请问两种写法有什么区别?

  • 写回答

3条回答 默认 最新

  • Zedee 2016-11-11 03:41
    关注

    http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html
    里面说到了

    上面的这个例子比原文给出的例子要好一些,因为原文中的加锁是针对类定义的,一个类只能有一个类定义,而同步的一般原理是应该尽量减小同步的粒度以到达更好的性能。笔者给出的范例的同步粒度比原文的要小。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型