BlockingQueue:队列(FIFO)

阻塞队列:

非阻塞队列:

ArrayBlockingQueue:阻塞队列

1、add(Object):将Object加入到队列中,如果队列可以

容纳,则返回true,否则抛出异常

2、offer(Object):表示如果可能的话,将Object加入到

队列中,如果能放进去,返回true,否则,返回false

3、put(Object):将Object加入到队列,如果队列没有

空间,调用次方法的线程被阻塞直到队列中有空间再继续

4、poll(time):取走队列中排在首位的元素对象,如果

队列为空,则可以等待给定的时间,取不到元素,返回null

5、take():取走队列中首位元素对象,如果队列为空

把调用该方法的线程阻塞,直到有元素加入到队列

时间: 2024-07-28 12:33:07

BlockingQueue:队列(FIFO)的相关文章

BlockingQueue队列学习

今天看了下BlockingQueue的几种实现,记录下以便以后复习. 首先来看一下BlockingQueue的家族成员: BlockingQueue除了先进先出外,还有两个操作:在队列为空时,获取元素的线程会等待队列变为非空.当队列满时,存储元素的线程会等待队列可用.阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程.阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素. 阻塞队列提供了四种处理方法: 方法\处理方式 抛出异常 返回特殊值 一

9_1_Java实现的BlockingQueue队列

package com.nowcoder; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.concurrent.Arr

[Java并发编程实战] 阻塞队列 BlockingQueue(含代码,生产者-消费者模型)

见贤思齐焉,见不贤而内自省也.-<论语> PS: 如果觉得本文有用的话,请帮忙点赞,留言评论支持一下哦,您的支持是我最大的动力!谢谢啦~ Java5.0 增加了两种新的容器类型,它们是指:Queue 和 BlockingQueue.Queue 用来临时保存一组等待处理的元素.BlockingQueue 扩张了 Queue 接口,增加了可阻塞的插入和获取等操作. BlockingQueue 通常运用于一个线程生产对象放入队列,另一个线程从队列获取对象并消费,这是典型的生产者消费者模型. 这里写图

java-线程-使用阻塞队列(BlockingQueue)控制线程通信

BlockingQueue是一个接口,也是Queue的子接口.BlockingQueue具有一个特征:当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则线程被阻塞:但消费者线程试图从BlockingQueue中取出元素时,如果队列已空,则该线程阻塞. 程序的两个线程通过交替向BlockingQueue中放入元素.取出元素,即可很好地控制线程的通信. BlockingQueue提供如下两个支持阻塞的方法: put(E e):尝试把Eu元素放如BlockingQueue中,

队列BlockingQueue的简单例子

队列,当进行多线程编程的时候,很多时候可能会用到,队列是先进先出的,我们可以将要执行的任务放置在队列内缓存起来,当线程池中线程可以使用的时候,我们就从队列中获取一个任务执行.. 当前是一个队列的简单例子. package com.chen.queue; import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.concurrent.BlockingQueue; import

文件 FIFO队列

<?php /** * Filefifo.php 文件型FIFO队列 */ class Filefifo { /** * $_file_data, 数据文件的路径 */ private $_file_data = ''; /** * $_file_idx, 索引文件的路径 */ private $_file_idx = ''; /** * $_file_idx_bak, 索引备份文件的路径, 防止意外断电等导致索引文件破坏 */ private $_file_idx_bak = ''; /**

java 阻塞队列BlockingQueue

java中阻塞BlockingQueue 接口实现类中用的较多的通常是ArrayBlockingQueue,LinkedBlockingQueue.它们都是线程安全的.ArrayBlockingQueue以数组的形式存储,LinkedBlockingQueue以node节点的方式进行存储. 开发中如果队列的插入操作比较频繁建议使用LinkedBlockingQueue,因为每个node节点都有一个前后指针,插入新元素仅需要变更前后的指针引用即可, ArrayBlockingQueue插入新元素,

java.util.concurrent 包笔记 --- BlockingQueue

BlockingQueue 队列接口,具有 4 组不同的方法用于插入.移除以及对队列中的元素进行检查.如果请求的操作不能得到立即执行的话,每个方法的表现也不同.这些方法如下:   Throws exception Special value Blocks Times out Insert add(e) offer(e) put(e) offer(e, time, unit) Remove remove() poll() take() poll(time, unit) Examine elemen

面试【JAVA基础】阻塞队列

1.五种阻塞队列介绍 ArrayBlockingQueue 有界队列,底层使用数组实现,并发控制使用ReentrantLock控制,不管是插入操作还是读取操作,都需要获取锁之后才能执行. LinkedBlockingQueue 底层基于单向链表实现,既可以当做有界队列,也可以当做无界队列使用.使用两个ReentrantLock实现并发控制:takelock和putlock. SynchronousQueue 底层使用单向链表实现,只有一个元素,同步的意思是一个写操作必须等到一个读操作之后才返回,