A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小路飞 中级黑马   /  2013-3-16 01:25  /  1214 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以后处理多线程同步问题是用synchronized...wait notifyAll还是lock...condition?孰优孰劣?请指点,谢了!还有什么时候用同步函数,什么时候用同步代码块?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-16 23:25

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

正序浏览
lock condition好,因为是1.5新特性嘛。将隐式的加锁释放锁显示化了,condition中可以持有多个锁
回复 使用道具 举报
那condition中的方法与之前的wait,notify相比较,有哪些优势?
回复 使用道具 举报
同步锁要好一些,Lock提供了同步方法和同步代码块所没有的功能,同步锁(Lock)通过显示定义同步锁对象来实现同步,使用Lock对象充当同步锁。
同步代码块可以人为的指定获得某个对象的锁,但是同步代码块无须显示指定同步监视器,同步方法的同步监视器就是对象本身。同步块的效率要比同步代码块的效率高。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
应该是都可以用吧。不过lock...condition是新版本的,应该能更优化代码吧。
同步函数是避免“多线程访问同一对象”的良方。即,当多个线程访问当多个线程访问同步方法时,只有一个能执行,其余的都必须挂起。
一般来说,当方法修改关键属性值的时候,需要使用同步函数。例如取钱方法和存钱方法都应该是同步方法。
同步代码块其实和同步方法的使用时机差不多,不过相比之下同步代码块更灵活,他可以在括号内放入任何对象的引用,而同步方法只能对本对象进行同步。
但使用安全性来说,同步代码块的灵活性给他带来了潜在的危险。。。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马