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(); } }
相关推荐
`custom_queue`项目旨在提供一个通用的对象自定义队列实现,它允许开发者根据具体需求定制队列的行为,例如添加特殊操作、同步机制或优化性能。该项目依赖于GSON、Google的异步库以及Jackson Core,这些库分别用于...
在这个“ios-自定义Operation队列实现直播礼物动画.zip”项目中,开发者利用自定义的`NSOperation`子类来构建一个动画队列,用于处理直播过程中的礼物动画效果。直播礼物动画是提升用户互动体验的重要组成部分,它...
标题 "索引队列-C#中的自定义队列" 指向了一个特定的数据结构实现,即在C#编程环境中创建一个支持索引访问...对于.NET开发者而言,掌握这样的自定义队列实现能够提高代码的灵活性和效率,特别是在处理特定类型问题时。
同时,也可以使用链表结构自定义队列实现,这样有利于理解队列的工作原理。 总结来说,约瑟夫生死游戏的解决方法体现了队列数据结构在算法设计中的应用,以及如何通过编程来解决这类循环淘汰问题。通过对这个问题的...
### 自定义队列实现 在C++中,我们可以通过继承`std::vector`或者使用动态数组来实现一个简单的队列。以下是一个基于动态数组实现的队列示例: ```cpp #include class Queue { private: int* arr; int front; ...
自定义Queue队列意味着我们需要创建一个类来实现Queue接口,以满足特定的需求或性能优化。 首先,让我们了解一下`java.util.Queue`接口提供的主要方法: 1. `void add(E e)`: 向队列尾部添加元素,如果队列已满,...
3. **设计与实现**:自定义队列的代码结构,可能包括节点结构定义、队列操作函数(如enqueue、dequeue、peek等)的实现。 4. **性能考虑**:如何确保队列操作的效率,比如通过使用指针操作减少内存拷贝,或者实现...
### 自定义队列实现 虽然C++标准库提供了`std::queue`,但在某些情况下,我们可能需要自定义队列的实现,例如为了优化性能、满足特定需求或进行教学目的。下面是一个简单的基于数组实现的队列: ```cpp template ...
5. **自定义队列实现** 如果需要自定义队列行为,可以实现`Queue`接口。下面是一个简单的基于数组的队列实现: ```java import java.util.NoSuchElementException; public class MyQueue<T> { private T[] ...
本文将深入探讨Java中自定义队列的操作、XML文件的处理以及如何进行文件夹操作。 首先,让我们来讨论自定义队列。在计算机科学中,队列是一种先进先出(FIFO)的数据结构,它在Java中可以通过实现`java.util.Queue`...
在Android中,最常用的消息队列实现是Handler、Looper和Message的组合。Handler负责发送和处理消息,Looper是消息循环器,它不断从消息队列中取出消息并分发,而Message则用来承载要传递的数据。然而,为了实现...
在这个自定义队列实现中,我们使用了环形数组来避免数组满后重新分配内存的问题。`enqueue`和`dequeue`方法分别实现了入队和出队操作,`isEmpty`和`isFull`检查队列的状态。 队列在许多实际应用中都有广泛用途,...
2. 优先级:如果需要根据某些条件(如VIP客户)调整服务顺序,可以使用`PriorityQueue`或自定义队列实现。 3. 异常处理:线程可能会抛出异常,需要妥善处理,避免整个程序崩溃。 4. 信号量控制:如果服务窗口数量...
本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和获取,但是没有自定义监听(当前项目不需要),本文档只有功能实现类 即业务层。若要调用和推送 则需要自己根据需求编写。...
在某些特定场景下,可能需要自定义队列实现,例如为了优化性能或者实现特殊功能。这时,可以使用C++的继承机制,创建一个新的类来继承`std::queue`,并覆盖其成员函数。自定义队列通常需要重写`push`、`pop`、`front...
标题中的“自己的队列类模板 Own queue class template”指的是创建一个符合C++标准模板库(STL)接口的自定义队列实现。下面我们将详细探讨如何设计这样一个队列类模板,以及`push`, `pop`, `destroy`, `front`, `...
#### 自定义队列实现 除了使用标准库提供的队列实现外,根据特定需求,开发者也可以自定义队列的实现。例如,上述代码片段展示了如何使用数组实现一个简单的队列`MyArrayQueue`。这个类实现了`Queue`接口,包含了...
二、自定义队列实现 在某些场景下,我们可能需要自定义队列,例如为了优化性能或者实现特定功能。自定义队列通常需要两个基本操作:入队(enqueue)和出队(dequeue)。我们可以使用链表或者数组作为底层数据结构来...
5. **自定义队列实现** 如果需要更高级的功能,如优先级队列,可以使用`std::priority_queue`。另外,通过继承`std::queue`并重载相关操作,可以实现自己的队列类,例如添加打印所有元素的方法。 6. **总结** C++...
在LabVIEW中,可以使用内置的FIFO(先进先出)队列或者自定义队列实现这一功能。队列机制可以有效地管理任务调度,特别是在高并发环境中,能避免资源争抢,提高程序执行效率。 队列在程序架构中的应用通常包括以下...