ReentrantLock-Condition用法

Dcr 1年前 ⋅ 1229 阅读

前言

使用 ReentrankLock 比直接使用 synchronized 更安全,可以替代 synchronized 进行线程同步. 对比 synchronized 配合 waitnotify 实现线程在条件不满足时等待,条件满足时唤醒; ReentrantLock 则使用 Condition 对象来实现 waitnotify 功能.

用法

使用时必须从 Lock 实例的 newCondition() 返回,这样才能获得一个绑定了 Lock 实例的 Condition 实例;

Condition提供的方法

  • await() 释放当前锁,进入等待状态
  • signal() 唤醒某个等待线程
  • signalAll() 唤醒所有等待线程

此外和 tryLock 类似, await 可以在等待指定时间后,如果还没有被其他线程通过 signal()signalAll() 唤醒,自己醒来;

全部评论: 0

    我有话说: