阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可用元素为止。
有了这样的功能,就为多线程的排队等候的模型实现开辟了便捷通道,非常有用。
java.util.concurrent.BlockingQueue继承了java.util.Queue接口,可以参看API文档。
import java.util.concurrent.ArrayBlockingQueue; /** * 阻塞队列 * * @author 吖大哥 * */ public class ArrayBlockingQueueTest { public static void main(String[] args) throws InterruptedException { ArrayBlockingQueue q = new ArrayBlockingQueue(3);// 有移除程序会执行结束 // ArrayBlockingQueue q = new ArrayBlockingQueue(2);// 将出现堵塞,一直处于等待 for (int i = 0; i < 6; i++) { q.put(i); System.out.println("向阻塞队列中添加一个元素:" + i); if (i == 2) { System.out.println("*******************************"); for (int j = 2; j >= 0; j--) { q.remove(j); System.out.println("从阻塞队列中删除一个元素:" + j); } System.out.println("*******************************"); } } System.out.println("*******************************"); System.out.println("程序退出………………………………"); } }
1)当ArrayBlockingQueue q = new ArrayBlockingQueue(3);// 有移除程序会执行结束
结果:
2)当ArrayBlockingQueue q = new ArrayBlockingQueue(2);// 将出现堵塞,一直等待
结果:
相关推荐
这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...
在本文中,我们将深入探讨Java多线程的相关知识点,并结合提供的源代码进行学习。 1. **线程的创建** - **实现Runnable接口**:创建一个类实现Runnable接口,然后将其实例传递给Thread类的构造函数,如`Thread t =...
JAVA并发编程实践-构建执行程序块-学习笔记是指在JAVA编程语言中,使用多线程、并发编程来实现高效、可靠的程序执行。在构建执行程序块时,需要注意线程安全问题,使用同步机制、并发容器、阻塞队列等来确保线程安全...
Java并发编程实践中的线程池是一个关键的概念,它在多线程编程中扮演着至关重要的角色,有效地管理和调度线程资源,以提高系统的性能和效率。线程池通过复用已存在的线程来减少线程的创建和销毁开销,避免了频繁的上...
Java并发包(java.util.concurrent)也提供了丰富的并发工具,如线程安全集合(如ConcurrentHashMap)、阻塞队列(如ArrayBlockingQueue)、信号量(Semaphore)、并发集合(如CopyOnWriteArrayList)和各种执行器...
### Java分布式应用学习笔记07线程池应用 在深入探讨Java分布式应用中线程池的应用之前,我们先来理解一下线程池的基本概念及其在并发编程中的重要性。线程池是Java并发编程的核心技术之一,它通过复用一组预创建的...
Java并发编程是Java开发中的重要领域,而JUC(Java Util Concurrency)是Java平台提供的一套高级并发工具包,它极大地简化了多线程和并发控制的复杂性。本笔记主要围绕尚硅谷周阳老师的JUC课程展开,旨在帮助个人...
"JUC并发编程学习笔记(硅谷)"很可能包含了关于Java并发工具集(Java Util Concurrency, JUC)的深入理解和实战经验。JUC是Java标准库提供的一套强大的并发处理工具,它极大地简化了多线程编程,提高了程序的可读性...
"concurrentTang"项目显然是一个专注于Java多线程与高并发学习的资源集合,其中包含了作者的学习笔记和相关代码示例。通过这个项目,开发者可以深入理解并掌握Java在并发环境下的编程技巧。 Java多线程允许程序同时...
在这个压缩包中,"尚硅谷juc"很可能包含了视频教程、课件或者讲义,旨在帮助学习者系统地理解和掌握Java多线程与并发处理的高级技巧。 Java Concurrency Utility(juc)是Java 5及更高版本引入的一个重要模块,它为...
Java并发编程领域的JUC(Java Util Concurrency)是Java平台中的一个重要组成部分,它为多线程编程提供了丰富的工具和框架。"哔哩哔哩JUC狂老师笔记.zip"中的笔记内容,显然聚焦于讲解如何有效地利用JUC库来提升并发...
在IT行业中,尤其是在Java开发领域,`java.util.concurrent`(JUC)包是并发编程的核心工具包,它提供了丰富的类和接口,使得开发者能够高效、安全地处理多线程环境中的任务。`Concurrent.zip`文件很可能是包含了...
a:手上项目所需,因为项目主要的目的是实现多线程的数据推送;需要创建多线程的话,那就要处理好线程安全的问题;因为项目需要,还涉及到排队下载的功能,所以就选择了线程池来管理线程以及线程池里面的任务队列...