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

Java多线程-新特征-阻塞队列ArrayBlockingQueue-学习笔记6

 
阅读更多

阻塞队列是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);// 将出现堵塞,一直等待

 

     结果:

 

 

  • 大小: 169 KB
  • 大小: 142.8 KB
分享到:
评论

相关推荐

    JAVA 多线程学习笔记

    这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...

    java多线程学习笔记

    在本文中,我们将深入探讨Java多线程的相关知识点,并结合提供的源代码进行学习。 1. **线程的创建** - **实现Runnable接口**:创建一个类实现Runnable接口,然后将其实例传递给Thread类的构造函数,如`Thread t =...

    JAVA并发编程实践-构建执行程序块-学习笔记

    JAVA并发编程实践-构建执行程序块-学习笔记是指在JAVA编程语言中,使用多线程、并发编程来实现高效、可靠的程序执行。在构建执行程序块时,需要注意线程安全问题,使用同步机制、并发容器、阻塞队列等来确保线程安全...

    JAVA并发编程实践-线程池-学习笔记

    Java并发编程实践中的线程池是一个关键的概念,它在多线程编程中扮演着至关重要的角色,有效地管理和调度线程资源,以提高系统的性能和效率。线程池通过复用已存在的线程来减少线程的创建和销毁开销,避免了频繁的上...

    Java并发编程学习笔记

    Java并发包(java.util.concurrent)也提供了丰富的并发工具,如线程安全集合(如ConcurrentHashMap)、阻塞队列(如ArrayBlockingQueue)、信号量(Semaphore)、并发集合(如CopyOnWriteArrayList)和各种执行器...

    Java分布式应用学习笔记07线程池应用

    ### Java分布式应用学习笔记07线程池应用 在深入探讨Java分布式应用中线程池的应用之前,我们先来理解一下线程池的基本概念及其在并发编程中的重要性。线程池是Java并发编程的核心技术之一,它通过复用一组预创建的...

    个人学习-JUC-笔记

    Java并发编程是Java开发中的重要领域,而JUC(Java Util Concurrency)是Java平台提供的一套高级并发工具包,它极大地简化了多线程和并发控制的复杂性。本笔记主要围绕尚硅谷周阳老师的JUC课程展开,旨在帮助个人...

    JUC并发编程学习笔记(硅谷)

    "JUC并发编程学习笔记(硅谷)"很可能包含了关于Java并发工具集(Java Util Concurrency, JUC)的深入理解和实战经验。JUC是Java标准库提供的一套强大的并发处理工具,它极大地简化了多线程编程,提高了程序的可读性...

    concurrentTang:Java多线程高并发学习笔记代码

    "concurrentTang"项目显然是一个专注于Java多线程与高并发学习的资源集合,其中包含了作者的学习笔记和相关代码示例。通过这个项目,开发者可以深入理解并掌握Java在并发环境下的编程技巧。 Java多线程允许程序同时...

    juc尚硅谷-自学笔记

    在这个压缩包中,"尚硅谷juc"很可能包含了视频教程、课件或者讲义,旨在帮助学习者系统地理解和掌握Java多线程与并发处理的高级技巧。 Java Concurrency Utility(juc)是Java 5及更高版本引入的一个重要模块,它为...

    哔哩哔哩JUC狂老师笔记.zip

    Java并发编程领域的JUC(Java Util Concurrency)是Java平台中的一个重要组成部分,它为多线程编程提供了丰富的工具和框架。"哔哩哔哩JUC狂老师笔记.zip"中的笔记内容,显然聚焦于讲解如何有效地利用JUC库来提升并发...

    Concurrent.zip

    在IT行业中,尤其是在Java开发领域,`java.util.concurrent`(JUC)包是并发编程的核心工具包,它提供了丰富的类和接口,使得开发者能够高效、安全地处理多线程环境中的任务。`Concurrent.zip`文件很可能是包含了...

    java线程池概念.txt

     a:手上项目所需,因为项目主要的目的是实现多线程的数据推送;需要创建多线程的话,那就要处理好线程安全的问题;因为项目需要,还涉及到排队下载的功能,所以就选择了线程池来管理线程以及线程池里面的任务队列...

Global site tag (gtag.js) - Google Analytics