ReentrantLock 和 synchronized 区别

  synchronized 原语和 ReentrantLock 在一般情况下没有什么区别,但是在非
常复杂的同步应用中,请考虑使用 ReentrantLock,特别是遇到下面 2 种需求的
时候。

 

 

 
  1.某个线程在等待一个锁的控制权的这段时间需要中断
  2.需要分开处理一些 wait-notify,ReentrantLock 里面的 Condition 应用,能够控
    制 notify 哪个线程
  3.具有公平锁功能,每个到来的线程都将排队等候
  3. ReentrantLock 可中断 可超时尝试非阻塞加锁,尝试超时加锁,尝试可相应
  中断加锁
  4. ReentrantLocklock():获取锁,如果锁被暂用则一直等待
  unlock():释放锁
  tryLock(): 注意返回类型是 boolean,如果获取锁的时候锁被占用就返回 false,
  否则返回 true
  tryLock(long time, TimeUnit unit):比起 tryLock()就是给了一个时间期限,保
  证等待参数时间
  lockInterruptibly():用该锁的获得方式,如果线程在获取锁的阶段进入了等待,
  那么可以中断此线程,先去做别的事
 
posted @ 2020-05-12 10:03  潘小伟  阅读(195)  评论(0编辑  收藏  举报