condition 实现生产者和消费者简单示例
synchronized 与 wait()和 notify() 、notifyAll() 方法相结合可以实现等待/通知模式,ReentantLock 同样也可以实现,需要借助 Condition 实现
public class ConditionTest { private Lock lock = new ReentrantLock(); private Condition condition = lock.newCondition(); private volatile Queue<String> queue = new LinkedList<>(); public void addTask(String s) { lock.lock(); try { queue.add(s); condition.signalAll(); } finally { lock.unlock(); } } public String getTask() throws InterruptedException { lock.lock(); try { while (queue.isEmpty()) { condition.await(); } return queue.remove(); } finally { lock.unlock(); } } }
作者:guanbin —— 纵码万里千山
出处:https://www.cnblogs.com/guanbin-529/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。