Condition实现等待与通知

关键字 synchronized 与 wait()/notify()这两个方法一起使用可以实 现等待/通知模式. Lock 锁的 newContition()方法返回 Condition 对 象,Condition 类也可以实现等待/通知模式. 使用 notify()通知时, JVM 会随机唤醒某个等待的线程. 使用 Condition 类可以进行选择性通知.

Condition 比较常用的两个方法: await()会使当前线程等待,同时会释放锁,当其他线程调用 signal() 时,线程会重新获得锁并继续执行. signal()用于唤醒一个等待的线程

static Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
condition.await();
condition.signal();

注意:在调用 Condition 的 await()/signal()方法前,也需要线程持有相 关的 Lock 锁. 调用 await()后线程会释放这个锁,在 singal()调用后会从 当前 Condition 对象的等待队列中,唤醒 一个线程,唤醒 的线程尝试 获得锁, 一旦获得锁成功就继续执行

Condition实现等待与通知

上一篇:Vuex-Getter


下一篇:Golang协程