黑马程序员技术交流社区

标题: 是我看漏了吗,lock和synchronized有什么区别 [打印本页]

作者: 潘多拉    时间: 2014-8-29 11:48
标题: 是我看漏了吗,lock和synchronized有什么区别
lock和synchronized有什么区别,替代以后如何简化代码啊,感觉比之前更复杂了

作者: pengyu1801    时间: 2014-8-29 18:03
简单了,体现了面向对象的封装,并且一个监视器可以挂多个锁,
作者: xiayoutianxia    时间: 2014-8-29 18:52
synchronized锁是自动释放的,lock必须手动释放
你也可以试试在程序上加个计时器,看看两个程序哪个用时短
作者: zeus00456    时间: 2014-8-30 09:58
不是这样滴:

lock简化的不是书写,而是思路
synchronized在书写时你需要着重分析有几把锁,你需要用哪一把
同步代码块和同步函数的选择(没错,贫道亲身体验,这两货不是随时通用的!)
synchronized的同步机制是隐式的,进synchronized时入获取锁,出synchronized时释放锁

而lock则不同,锁是你自己定义的,而不是用一个已有的对象
lock是显示的,想让线程什么时候同步就lock(),想解锁就unlock(),这需要体会的:将整个锁的逻辑完全抽取出来,赤裸裸的摆在你面前,对于思路来说(个人认为)简化了
condition才是lock比较难驾驭的地方,也是lock相比于synchronized真正好用(灵活)的地方,通过条件操作线程相较于synchronized有风险的notifyAll()靠谱了不少。

个人感觉,lock用用,等熟悉了必然优越于synchronized。
当然,可能 ExecutorService 可能更优越





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