java多线程synchronized和Lock,Conditon的锁有什么区别?

HJMing123 2017-01-25 03:26:02
在1.5以前的版本,给我的感觉是synchronized同步一个方法或者语句,而对象就是锁,用这个对象去调用wait,notify方法给我的感觉是,调用wait,那么当前线程就对外释放锁的所有权,当被notify时,就重新持有该线程的锁所有权,继续执行。

但是到了1.5以后的版本,开始有lock 和unlock,我想问此时的锁又是什么呢?以及通过newCondition方法返回的Condition实例调用signal,await,此时Condition的实例的意义是什么呢?

多谢!
...全文
287 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sam_Deep_Thinking 2017-01-26
  • 打赏
  • 举报
回复
区别不大,只是从API的层面看,用起来比较直观一些。 synchronized 和 lock,当多线程争夺资源时,仍然都是要挂起其他线程的,而不像基于CAS的无锁处理。
lxyscls 2017-01-26
  • 打赏
  • 举报
回复
lock可以跨函数,synchronized不行 lock必须有unlock,synchronized出了scope就行 lock可以new出很多个Condition,Object不行 丰俭由人吧
inrtyx 2017-01-25
  • 打赏
  • 举报
回复
建议先百度下

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧