博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阻塞队列
阅读量:5884 次
发布时间:2019-06-19

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

hot3.png

阻塞队列

    阻塞队列不同于普通的对列,当队列为空的时候,take元素就会一直阻塞住,当队列满的时候,put也会阻塞住。下面为进队和出队的源码:

public class BlockingQueue {    private List queue = new LinkedList();    private int  limit = 10;    public BlockingQueue(int limit){        this.limit = limit;    }    public synchronized void enqueue(Object item) throws InterruptedException  {        while(this.queue.size() == this.limit) {            wait(); //进队的时候,如果已经队满则阻塞        }        if(this.queue.size() == 0) {            notifyAll();         }        this.queue.add(item);    }    public synchronized Object dequeue() throws InterruptedException{        while(this.queue.size() == 0){            wait(); //出队的时候,如果队空,则阻塞        }        if(this.queue.size() == this.limit){            notifyAll();        }        return this.queue.remove(0);    }}

 

转载于:https://my.oschina.net/u/3139515/blog/1571274

你可能感兴趣的文章
文件缓存
查看>>
PHP盛宴——经常使用函数集锦
查看>>
重写 Ext.form.field 扩展功能
查看>>
Linux下的搜索查找命令的详解(locate)
查看>>
福利丨所有AI安全的讲座里,这可能是最实用的一场
查看>>
开发完第一版前端性能监控系统后的总结(无代码)
查看>>
Python多版本情况下四种快速进入交互式命令行的操作技巧
查看>>
MySQL查询优化
查看>>
【Redis源码分析】如何在Redis中查找大key
查看>>
android app启动过程(转)
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
.Net 通过MySQLDriverCS操作MySQL
查看>>
JS Cookie
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>