4-19-synchronized和reentrantlock区别

文章目录
  1. 1. synchronized与reentrantlock区别
    1. 1.1. 共同点
    2. 1.2. 不同点

synchronized与reentrantlock区别

共同点

  1. 都是协调共享数据访问(互斥作用)
  2. 都是可重入锁
  3. 保证可见性和互斥性(最多一个线程在操作数据)

不同点

  1. reentrantlock显式获得,释放锁
  2. reentrantlock可响应中断(syn只会一直等待),可轮回
  3. reentrant是api级别,synchronized是jvm级别
  4. reentrant可公平
  5. reentrant可用condition绑定多个条件,指定通知谁
  6. 底层实现不一样,syn是同步阻塞,悲观并发。Lock是同步非阻塞(也有方法可阻塞),乐观并发策略。
  7. lock是接口,syn是java关键字
  8. syn发生异常,会自动释放锁,不会死锁。lock需要finally释放,否则没有主动Unlock就有可能会死锁。
  9. lock可以直到有没有成功获取锁,syn不行
  10. lock可以多个线程进行读操作,例如读写锁。增大了集合的并发度。