Java:实现简单的阻塞队列
来源:互联网 发布:点卡商城源码 编辑:程序博客网 时间:2024/06/06 01:09
JDK中自带ArrayBlockingQueue、ListBlockingQueue等阻塞的队列。我们也可以认为自己实现一个。
public class BlockQueue<T> { // push的锁 private final static Object pushLock = new Object(); // pop的锁 private final static Object popLock = new Object(); // 存储数据 private Stack<T> stack; public BlockQueue() { stack = new Stack<>(); } public synchronized void push(T t) { int MAX_SIZE = 3; if (stack.size() >= MAX_SIZE) { // 超过了最大长度,那么就等待 pushLock(); } stack.push(t); // 解开pop的锁 popUnlock(); } public T pop() { if (stack.size() == 0) { // 不能pop,那么就等待 popLock(); } T t = stack.pop(); // 解开push的锁 pushUnlock(); return t; } // push锁 private void pushLock() { synchronized (pushLock) { try { pushLock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } // 解开push锁 private void pushUnlock() { synchronized (pushLock) { pushLock.notify(); } } // pop锁 private void popLock() { synchronized (popLock) { try { popLock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } // 解开pop锁 private void popUnlock() { synchronized (popLock) { popLock.notify(); } }}
阅读全文
0 0
- Java:实现简单的阻塞队列
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- Java阻塞队列的实现
- java 环形阻塞队列简单实现
- 一个简单的阻塞队列实现
- c++ 多线程阻塞队列的简单实现
- 使用数组简单实现的阻塞队列
- Java 阻塞队列实现
- java模拟阻塞队列的实现
- Java的阻塞队列
- 基于C++11的阻塞队列简单实现
- java 之 阻塞队列实现
- java 阻塞队列自定义实现
- java多线程之阻塞队列BlockingQueue的简单应用
- xtu-1265 Longest Common Subsequence(字符串/计数)
- B
- Java之IO流
- 操作系统银行家算法
- oid android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference的解决
- Java:实现简单的阻塞队列
- 函数返回指针数组
- 系统集成项目管理工程师学习笔记(三)项目管理的一般知识
- 0517
- 字符串转换成十进制整数
- vivo2017实习生编程题
- Python:Template使用指南
- Java List集合使用方法介绍(2)——公告管理
- C++ 简易string类实现(五)-进一步抽象