`
xiangxingchina
  • 浏览: 506841 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

阻塞队列的简单实现

阅读更多
/** 
 * @author luxiangxing 
 * @time   2017-05-06 
 * @email  xiangxingchina@163.com 
 * @tel    15330078427 
 */  
public class BlockingQueue<E> {
	private List<E> queue = new LinkedList<E>();
	private int limit = 10;
	
    public BlockingQueue(int limit) {
		this.limit = limit;
	}

	public synchronized void put(E e) throws InterruptedException {
		while (this.queue.size() == this.limit) { 
			wait();
		}
		if (this.queue.size() == 0) {
			notifyAll();
		}
		this.queue.add(e);
	}

	
	public synchronized E get() throws InterruptedException {
		while (this.queue.size() == 0) { 
			wait();
		}
		if (this.queue.size() == this.limit) {
			notifyAll();
		}
		return this.queue.remove(0);
	}
}

 

分享到:
评论

相关推荐

    Java实现简单的阻塞队列2种方式

    Java实现简单的阻塞队列2种方式,1使用wait(),notify();2使用countdownlatch实现

    基于Linux实现简单的队列

    基于Linux实现简单的队列功能。本代码实现了阻塞和非阻塞方式出入队列。同时是线程安全的。如果队列满,在入队时可以指定最大超时。如果队列空,可以在出队时指定最大超时。

    Java wait和notifyAll实现简单的阻塞队列

    主要介绍了Java wait和notifyAll实现简单的阻塞队列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Redis实现分布式队列浅析

    Redis是什么? Redis是一个简单的,高效的,分布式的,基于内存的缓存工具。...需要实现分布式队列,至少要有一个master(192.168.45.1)和一个slave(192.168.45.130) linux下默认配置文件在/etc/redis/

    blockingQueues:简单,高性能,goroutine安全队列,可用作资源池或作业队列

    阻塞队列提供了一些简单,高性能,常规的安全队列,可用作资源池或作业队列。 主要重点是在不牺牲可读性的前提下实现简单性和高性能。 实际上,我试图提供有关代码的良好文档以及一些用法示例。 提供的队列 ...

    python队列Queue的详解

    Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 基本FIFO队列 class Queue.Queue(maxsize=0) FIFO即First ...

    Redis 实现队列原理的实例详解

    Redis 实现队列原理的实例详解 场景说明: ·用于处理比较耗时的请求,例如批量发送邮件,如果直接在网页触发执行发送,程序会出现超时 ·高并发场景,当某个时刻请求瞬间增加时,可以把请求写入到队列,后台在去...

    操作系统作业(进程控制管理实现)

    实验要求:进程控制管理实现 ...每次事件处理后应形象地显示出当前系统中的执行进程是哪一个,就绪队列和阻塞队列分别包含哪些进程。 自己做的 java图形界面 增加了内存管理的模拟并采用了最佳适应算法。

    基础知识五、Python实现线程池之线程安全队列

    文章目录一、线程池组成二、线程安全队列的实现三、测试逻辑3.1、测试阻塞逻辑3.2、测试读写加锁逻辑 一、线程池组成  一个完整的线程池由下面几部分组成,线程安全队列、任务对象、线程处理对象、线程池对象。其中...

    基于GD32F1x0手动编程实现简易FreeRtos之任务阻塞

    在之功能基础上扩展实现了任务阻塞延时功能。

    java语言操作系统课程设计模拟进程管理系统源码.zip

    针对需求1、2: 为实现多个进程并发运行需要建立管理对象和进程对象的联系以便对运行的进程进行管理,故可以在管理对象中设置就绪、阻塞、运行队列来容纳进程,从而方便的进行管理; ①创建:初始化刚建立的进程对象...

    利用简单的结构和控制方法模拟进程结构、进程状态转换和进程控制

    方法:用PCB表示整个进程实体,利用键盘交互式命令控制方法模拟进程执行中产生的事件。 ...4、 每次事件处理后应形象地显示出当前系统中的执行进程是哪一个,就绪队列和阻塞队列分别包含哪些进程。

    操作系统实验 模拟 作业调度 模拟进程控制

    利用简单的结构和控制方法模拟进程结构、进程状态和进程控制。 (二) 实验内容与步骤: ...4、 每次事件处理后应形象地显示出当前系统中的执行进程是哪一个,就绪队列和阻塞队列分别包含哪些进程。

    c++实现进程调度的模拟

    利用c++模拟进程的调度。...(4 分)  按先进先出方式管理就绪和阻塞队列,按队列输出进程状态 (2 分)  完成可变分区的分配与回收 (3 分)  界面清晰友好 (2 分)  实验结束后撰写实验报告(5 分)。

    论文研究-无线移动网中的队列降质接纳控制.pdf

    提出了在无线移动网中基于队列的降质接纳控制算法,它区分了实时业务和非实时业务,同时考虑了切换优先和业务优先两...性能分析结果显示该算法简单易实现,具有较低的新呼叫阻塞率、切换呼叫中断率和较高的系统利用率。

    Python实现简单多线程任务队列

    最近我在用梯度下降算法绘制神经网络的数据时,遇到了一些算法性能的问题。... 我不想用一个像 cerely(一种分布式任务队列)一样大而全的任务队列框架,因为框架对于我的这点需求来说太重了,并且我的绘图也并不

    Python 使用threading+Queue实现线程池示例

    一、线程池 1、为什么需要使用线程池 1.1 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。...比如:延时执行、定时循环执行的策略等,运用线程池都能进行很好的实现。 2、

    黑龙江大学《操作系统》实验报告及源码C/C++编写

    有实验源码和实验报告,附有实验算法流程图。实验一:进程控制、实验二:分页式存储管理...按先进先出的方式管理就绪和阻塞队列,按队列输出进程状态4.完成可变分区的分配和回收5.界面清晰友好6.实验结束后撰写实验报告

    多线程并发处理的简单实现

    使用队列做缓冲池,通过工作者线程来处理并任务,实现线程空闲时阻塞,有任务令牌时回复服务。

    操作系统进程控制C++代码实现

    利用简单的结构和控制方法模拟进程结构、进程状态和进程控制。 内容: 1.能够模拟进程的创建与...3.按先进先出方式管理就绪和阻塞队列,能够按队列形式输出进程状态 4.完成可变分区的分配与回收,分配用最佳适应方式;

Global site tag (gtag.js) - Google Analytics