黑马程序员技术交流社区

标题: 关于synchronized和lock [打印本页]

作者: hanrongle    时间: 2013-7-26 11:43
标题: 关于synchronized和lock
本帖最后由 杜光 于 2013-7-28 09:39 编辑

synchronized和lock到底如何应用?
哪种方式灵活方便,哪种方式应用更为广泛?

作者: 杨增坤    时间: 2013-7-26 12:06
使用lock,是synchronized的升级机制,
Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。
可以查看一下API,上面说的也清楚,效果是一样的
作者: hanrongle    时间: 2013-7-26 12:11
forward 发表于 2013-7-26 12:06
使用lock,是synchronized的升级机制,
Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁 ...

thank you!
作者: a2213502    时间: 2013-7-26 13:08
Lock类是jdk1.5中新加入的同步锁的升级解决方案。Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的Condition 对象。Lock 接口的实现允许锁在不同的作用范围内获取和释放,并允许以任何顺序获取和释放多个锁
synchronized 方法或语句的使用提供了对与每个对象相关的隐式监视器锁的访问,但却强制所有锁获取和释放均要出现在一个块结构中:当获取了多个锁时,它们必须以相反的顺序释放,且必须在与所有锁被获取时相同的词法范围内释放所有锁


作者: jialihong    时间: 2013-7-26 17:50
synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不同,lock是通过代码实现的,要保证锁定一定会被释放,就必须将unLock()放到finally{}中。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2