package Queue;
import java.util.NoSuchElementException;
/**
* 有界队列
*/
public class BQueue<T> {
private final T[] qArray;
private int front, rear;
private int capacity, count;
public BQueue(int size) {
capacity = size;
qArray = (T[]) new Object[capacity];
front = 0;
rear = 0;
count = 0;
}
public BQueue() {
this(50);
}
public boolean isEmpty() {
return count == 0;
}
public boolean isFull() {
return count == capacity;
}
public int size() {
return count;
}
public void push(T item) {
if(isFull())
throw new IndexOutOfBoundsException(
"Queue overflow");
qArray[rear] = item;
rear = (rear + 1) % capacity;
count++;
}
public T pop() {
if(isEmpty())
throw new NoSuchElementException(
"Empty queue");
T tmp;
tmp = qArray[front];
front = (front + 1) % capacity;
count--;
return tmp;
}
public static void main(String[] args) {
BQueue<String> b = new BQueue<String>(10);
b.push("A");
b.push("B");
b.push("C");
//System.out.println(b.size()); // 3
try {
while(!b.isEmpty())
System.out.println(b.pop());
} catch(NoSuchElementException e) {
System.err.println("Empty queue");
}
}
}
分享到:
相关推荐
主要介绍了Java中有界队列的饱和策略(reject policy)原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本文翻译自LMAX关于Disruptor的...目前Disruptor版本已经迭代至3.0,本论文是基于Disruptor1.0写就,在新版本中,相对与1.0版本,其核心设计思想没有变,只是实现细节有所调整和优化,因此,此论文仍然很有研读意义。
二维码QR可以帮助您创建和使用Redis的队列,上限收集(有界队列),双端队列和堆栈数据结构。 Redis非常适合这些抽象数据结构的实现,QR使使用Python中的结构更加容易。快速设置你会需要: -2.0或更高版本默认情况下...
无锁有界无阻塞发布订阅队列(Sub-Sub Queue)这是一个发布订阅模式队列,在该队列中,发布者永远不会被慢速订阅者阻止。 无锁有界非阻塞发布订阅队列(Sub-Sub Queue)这是一个发布订阅模式队列,在该队列中,发布...
是单一生产者,单一消费者的有界队列。 推送和弹出无需等待。 是一个多生产者,单消费者有界队列。 弹出无需等待。 是一个多生产者,多消费者的有界队列。 API文档: : 注意:如果您的项目是使用--threads:off...
从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。 可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是...
从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。 可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是...
Java并发编程常见知识点源码集锦,涉及到对象锁,Executors多任务线程框架,线程池等... ConcurrentLinkedQueue、DelayQueue示例、自定义的线程拒绝策略、自定义线程池(使用有界队列)、自定义线程池(使用无界队列)。。。
有界SPSC队列此板条箱为Rust提供了一个非常简单的有界单生产者单消费者(SPSC)队列。 它提供了有界SPSC队列的数据结构。此板条箱为Rust提供了一个非常简单的有界单生产者单消费者(SPSC)队列。 它为两个线程提供了...
container Collection 标记: 顶级接口 List 标记: interface ...ArrayBlockingQueue 数组结构实现,有界队列,手工固定上限 LinkedBlockingQueue 链表结构实现,无界队列(默认上限Integer.MAX_VALUE)
NCPS队列 热图的形状单元测试 NCPS::ConcurrentQueue是一种有界和无界格式的通用队列,并使用... 在有界队列中,永远不会执行动态内存分配。 此外, NCPS::ConcurrentQueue提供了独特的功能,可以在无界队列中
同步队列基于数组的有界队列无容量的同步队列有容量的有界队列拒绝执行策略任务入队列策略、线程创建策略– parking to wait for <0x000000
使用Condition重写waitnotify案例并实现一个有界队列.mp4 深入解析Condition源码.mp4 实战:简易数据连接池.mp4 线程之间通信之join应用与实现原理剖析.mp4 ThreadLocal 使用及实现原理.mp4 并发工具类...
银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果居于第一种,且申请额超出银行现存资金总额顺得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则业务...
为了有效解决光缓存中的分组竞争冲突问题,提出一种基于缓存时间有界的光分组排队算法,采用有界延迟机制并建立相关队列模型。在提出的模型中,根据缓冲区剩余工作量的概率分布,开发出一个递归方程组用于计算缓存中...
如何使用我们的低延迟有界队列之一的示例。 // writer thread Executors.newSingleThreadExecutor().execute(new Runnable() { @Override public void run() { queue.add(1); } }); // reader thread Executors...
第32节使用Condition重写wait/notify案例并实现一个有界队列00:22:05分钟 | 第33节深入解析Condition源码00:21:15分钟 | 第34节实战:简易数据连接池00:24:53分钟 | 第35节线程之间通信之join应用与实现原理剖析...
第32节使用Condition重写wait/notify案例并实现一个有界队列00:22:05分钟 | 第33节深入解析Condition源码00:21:15分钟 | 第34节实战:简易数据连接池00:24:53分钟 | 第35节线程之间通信之join应用与实现原理剖析...
第32节使用Condition重写wait/notify案例并实现一个有界队列00:22:05分钟 | 第33节深入解析Condition源码00:21:15分钟 | 第34节实战:简易数据连接池00:24:53分钟 | 第35节线程之间通信之join应用与实现原理剖析...