其他分享
首页 > 其他分享> > condition 实现生产者和消费者简单示例

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();
        }
    }
    
}

 

标签:示例,生产者,lock,private,queue,unlock,public,condition
来源: https://www.cnblogs.com/guanbin-529/p/16099984.html