黑马程序员技术交流社区
标题:
是我看漏了吗,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