package async; import java.util.ArrayList; import java.util.List; /** * * 自定义队列 * * @version 2013-9-9 */ public class Queue<T> { /** * 默认队列容量 */ private static final int DEFAULT_SIZE = 100; /** * 队列容量 */ private int size; /** * 队列数据 */ private List<T> data = new ArrayList<T>(); /** * 读取锁 */ private Object lock = new Object(); /** * * 构造函数 */ public Queue() { this.size = DEFAULT_SIZE; } /** * * 构造函数 * * @param size * 队列容量 */ public Queue(int size) { this.size = size; } /** * * 添加任务 * * @param t * 任务对象 * @param isWait * 队列满是否等待 * @return 是否添加成功 */ public boolean put(T t, boolean isWait) { synchronized (lock) { if (isFull()) { if (isWait) { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); return false; } } else { System.out.println("The queue is full;"); return false; } } data.add(t); lock.notifyAll(); return true; } } /** * * 获取任务 * * @param isWait * 队列空是否等待 * @return 任务对象 */ public T get(boolean isWait) { synchronized (lock) { if (isEmpty()) { if (isWait) { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); return null; } } else { System.out.println("The queue is empty;"); return null; } } T task = data.remove(0); lock.notifyAll(); return task; } } /** * * 队列是否为空 * * @return 队列是否为空 */ public synchronized boolean isEmpty() { return 0 == data.size(); } /** * * 队列是否已满 * * @author Jinglong Wu * @return 队列是否已满 */ public synchronized boolean isFull() { return this.size == data.size(); } }
相关推荐
自定义Operation队列简单实现直播礼物动画
custom_queue 通用对象的自定义队列实现 所需的罐子: GSON 谷歌异步 杰克逊核心
本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和获取,但是没有自定义监听(当前项目不需要),本文档只有功能实现类 即业务层。若要调用和推送 则需要自己根据需求编写。...
在android中使用消息对队列,实现的简单的开始,暂停功能
该消息队列不能依赖于已有库的队列,必须是自己设计实现的 该消息队列是线程安全的 该消息队列能接收CLMessage继承体系的消息 该消息队列能融入到本课程所提供的程序库中,能支持线程之间的通信(即需要提供发送消息...
/*作者:一条傻龙 *名称:单链队列 *编译环境:vc++ 6.0 *使用语言:c *功能:构造一个空队列,销毁队列,插入,删除,队列的建立(无法构造多个队列) *最后修改时间:2010-10-30 09:36 */
java双端队列的实现-Java实现自定义双端队列(链表和数组两种方式) 数组和链表.pdf
定义全局线程池,将用户的请求放入自定义队列中,排队等候线程调用,等待超时则自动取消该任务,实现超时可取消的异步任务
该示例通过 rabbitmq_delayed_message_exchange 插件实现自定义延时时间的延时队列。 示例是纯净的,只引入了需要的架包 启动示例时,请确保MQ已经安装了延时插件(附件里带有插件及安装说明)以及示例的MQ相关的配置...
所谓双端队列(double-ended queue,deque),就是在...使用循环数组方式实现双端队列,要求实现上述操作,并实现一个Print输出操作, 能将队列由左至右的次序输出于一行,元素间用空格间隔。队列元素类型设为整型。
c++链表队列的实现,c++链表队列的实现,c++链表队列的实现,c++链表队列的实现,c++链表队列的实现,c++链表队列的实现
当winform中控件之间传递消息时,防止回调事件中有耗时操作,可以忽略一部分消息,只执行最终的消息
2 自定义队列 http://127.0.0.1:8000/get?queueName=队列名称 获取队列内容: http://127.0.0.1:8000/getList?队列名称 http://127.0.0.1:8000/getList queueName 获取队列长度: http://127.0.0.1:8000/getLen ...
采用客户-服务器结构,其中服务器实现各个用户的登录并存储相关信息,客户端通过服务器端获取当前登录用户信息,然后各客户进程通过消息队列实现双向通信。 Linux IPC通信利用消息队列消息机制,多线程通信,字符串...
基于rabbitmq实现的消息队列组件,附所有源代码,大家可以放心的使用,可用于商业程序,欢迎大家交流。
包含自定义栈和队列,两个栈实现一个队列,包含min的栈等
一个node实现队列执行的自定义处理项目发布部署命令式cli脚本工具
里面含有栈和队列的一些基本操作,和六种不同的方法表示杨辉三角!
从此不再为各种原因造成的个别短信发送失败而烦忧! 特点: 支持短信/语音发送均衡调度,可按代理器权重值均衡选择服务商发送。 支持一个或多个备用代理器(服务商)。 允许推入队列,并自定义队列实现逻辑
springboot整合RabbitMQ实现延时队列的两种方式 教程及源码。参考博客:https://blog.csdn.net/qq_29914837/article/details/94070677