java实现有界队列
来源:互联网 发布:docker安装mysql详解 编辑:程序博客网 时间:2024/05/04 15:36
package com.cyq;import java.util.LinkedList;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;/** * 有界队列的基本实现 */public class MyQueue { private LinkedList<Object> list = new LinkedList<>(); private AtomicInteger count = new AtomicInteger(0); private final int minSize = 0; private int maxSize; private final Object lock = new Object(); public MyQueue(int size) { this.maxSize = size; } public void put(Object obj) { synchronized (lock) { while (count.get() == this.maxSize) { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } list.add(obj); count.incrementAndGet(); System.out.println("元素加入:" + obj); lock.notify(); } } public Object take() { Object obj = null; synchronized (lock) { while (count.get() == this.minSize) { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } obj = list.removeFirst(); count.decrementAndGet(); System.out.println("元素拿出:" + obj); lock.notify(); } return obj; } public static void main(String[] args) { final MyQueue mq = new MyQueue(4); System.out.println("初始化四个元素"); mq.put("aa"); mq.put("bb"); mq.put("cc"); mq.put("dd"); System.out.println(); Thread t1 = new Thread(new Runnable() { @Override public void run() { System.out.println("小明开始放元素了"); mq.put("ee"); mq.put("ff"); } }); t1.start(); System.out.println(); Thread t2 = new Thread(new Runnable() { @Override public void run() { System.out.println("小王开始拿元素了"); Object o1 = mq.take(); Object o2 = mq.take(); } }); try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } t2.start(); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(); System.out.println("队列中的元素:"); for (Object obj : mq.list) { System.out.println(obj); } }}
阅读全文
0 0
- java实现有界队列
- Queue队列实现---有界队列BQueue
- java并发-使用内置条件队列实现简单的有界缓存
- 队列:循环队列Java实现
- java实现队列
- java 实现的队列
- java 队列实现
- Java实现队列操作
- Java实现循环队列
- java 队列实现
- java 队列的实现
- Java实现队列
- 堆、队列、java实现
- java实现队列
- 队列的实现(JAVA)
- java实现队列
- java实现队列
- java实现队列
- 随想
- HDU 6114 Chess(组合数学)
- C#学习笔记16-结构体和类
- 为eclipse添加背景色
- 面向对象 接口
- java实现有界队列
- iOS 3D Touch超详细入门(附带demo示例代码)
- iOS开发:为你的应用兼容iPhone X
- oracle中文数据显示乱码--字符集修改方法
- elasticsearch-sql插件安装与使用
- grep命令初步
- 关于DNF的多媒体包NPK文件的那些事儿(6)
- ubuntu如何更换源
- SVN还原更新,本地代码没有提交,不小心代码被覆盖,代码的找回方式