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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

lock和synchronized有什么区别,替代以后如何简化代码啊,感觉比之前更复杂了

3 个回复

倒序浏览
简单了,体现了面向对象的封装,并且一个监视器可以挂多个锁,
回复 使用道具 举报
synchronized锁是自动释放的,lock必须手动释放
你也可以试试在程序上加个计时器,看看两个程序哪个用时短
回复 使用道具 举报
不是这样滴:

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

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

个人感觉,lock用用,等熟悉了必然优越于synchronized。
当然,可能 ExecutorService 可能更优越
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马