博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
reentrantlocklock实现有界队列
阅读量:5280 次
发布时间:2019-06-14

本文共 1505 字,大约阅读时间需要 5 分钟。

今天找synchronize和reentrantlock区别的时候,发现有个使用reentrantlock中的condition实现有界队列,感觉挺有趣的,自己顺手敲了一遍

class Queue{    private Object[]queue;    private int size;       //记录队列的大小这样你就不需要累次调用queue.length    private int length=0;   //用于记录队列中元素的个数    private int addindex=0;    private int rmindex=0;    private Lock lock= new ReentrantLock();    private Condition full =lock.newCondition();    private Condition empty =lock.newCondition();        public Queue(int size) {        this.size=size;        queue=new Object[size];    }    public void add(Object object) throws InterruptedException {        lock.lock();        try {            if(length==size) {                System.out.println("queue already full");                full.await();            }            queue[addindex]=object;            length++;            if(++addindex == size)                addindex=0;            empty.signalAll();                } finally {            lock.unlock();// TODO: handle finally clause        }        }    public Object remove()throws InterruptedException {        lock.lock();        try {            if(length==0) {                System.out.println("there was nothing to remove");                empty.await();            }            Object object=queue[rmindex];            length--;            if(++rmindex==size)                rmindex=0;            full.signalAll();            return object;        } finally {            lock.unlock();        }    }}

 

转载于:https://www.cnblogs.com/feixiangdecainiao/p/10443789.html

你可能感兴趣的文章
51Nod1353 树
查看>>
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>
12010 解密QQ号(队列)
查看>>
2014年辛星完全解读Javascript第一节
查看>>