JUC学习之生产者消费者案例(Condition方式)
一、简介 上一篇我们介绍了使用传统的synchronized结合wait()/notifyAll()线程通信机制实现了生产者消费者案例,并且介绍了多线程交互中常见的虚假唤醒现象。我们都知道,Lock同步锁其实可以代替synchronized完成同步功能,并且使用起来还没有那么复杂,本文将介绍如何使用Lock实现生产者消费者案例。 下表是synchronized和Lock实现线程通信方法的区别: synchronized Lock wait() await() notifyAll() signalAll() Lock结合Condition可以替代synchronized实现同步功能,JDK官网介绍如下: 并且官网也给了Condition的使用示例: class BoundedBuffer { final Lock lock = new ReentrantLock(); final Condition notFull = lock.newCondition(); final Condition notEmpty = lock.newCondition(); final Object[] items = new Object[100]; int putptr, takeptr, count; public void put(Object x) throws