Synchronized 和 lock 的区别


Synchronized
 1:jvm 层面实现,如果抛异常的话,jvm会自动释放掉锁
 2:只有一个条件变量,锁对象的wait 和 notify
 3:可以被性能监视工具监视到
 4:如果在方法上添加syn那么,锁对象就是该对象,共享该对象的线程就会互斥

Lock
 1:更加面向对象
 2:代码层面实现
 3:可以产生多个条件变量

 4:可以尝试非阻塞的获取锁,能中断的获取锁,能超时获取锁


Lock能完成所有synchronized的功能,并且更加面向对象,能提供更精确的定义,更好的性能
synchronized 会自动释放锁,lock需要手动释放锁.

原文地址:https://www.cnblogs.com/coldridgeValley/p/5035422.html