`

BlockingQueue

 
阅读更多

可阻塞队列

  (1) 队列包含固定长度的队列和不固定长度的队列。
  (2)什么是可阻塞队列,阻塞队列的作用与实际应用,阻塞队列的实现原理
ArrayBlockingQueue
    看ArrayBlockingQueue类的帮助文档,其中有各个方法的区别对比的表格
    只有put方法和take方法才具有阻塞功能
 (3)用3个空间的队列来演示阻塞队列的功能和效果
 (4)用两个具有1个空间的队列来实现同步通知的功能
 (5)阻塞队列与Semaphore有些相似,单也不同。阻塞队列是一方存放数据,另一方释放数据,Semaphore
通常则是由同一方设置和释放信号量

package com.ronbay.thread.timer;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class BlockingQueueTest {

	public static void main(String[] args) {
		final BlockingQueue queue = new  ArrayBlockingQueue(3);
		for (int i = 0; i < 2; i++) {
			new Thread(){
				public void run(){
					while(true){
						try {
							Thread.sleep((long)(Math.random()*1000));
							System.out.println(Thread.currentThread().getName() + "准备放数据");
							queue.put(1);
							System.out.println(Thread.currentThread().getName() + "已经放了数据" +
									"队列目前有" + queue.size() + "个数据");
						} catch (Exception e) {
							// TODO: handle exception
						}
					}
				}
			}.start();
		}
		
		new Thread(){
			public void run(){
				try {
					Thread.sleep(1000);
					System.out.println(Thread.currentThread().getName() + "准备取数据!");
					queue.take();
					System.out.println(Thread.currentThread().getName() + "已经取走数据" +
							"队列目前有" + queue.size() +"个数据");
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}.start();
	}

}

 

分享到:
评论

相关推荐

    BlockingQueue队列自定义超时时间取消线程池任务

    在Java编程中,`BlockingQueue`是一个非常重要的并发工具类,它主要用于线程间的数据通信。`newFixedThreadPool`是`java.util.concurrent`包中的一个线程池工厂方法,用于创建固定数量线程的线程池。`FutureTask`则...

    线程----BlockingQueue

    ### 线程与BlockingQueue知识点详解 #### 1. BlockingQueue简介 `BlockingQueue`是一种特殊类型的队列,主要用于多线程环境中的任务管理。它具有以下特性:当队列为空时,从队列中获取元素的操作会被阻塞;同样地,...

    C++写的跨平台BlockingQueue

    《C++实现的跨平台BlockingQueue详解》 在软件开发中,线程间的通信和同步是必不可少的部分。Java中的`BlockingQueue`是一个高效且常用的并发工具类,它提供了线程安全的数据结构,允许一个线程放入元素,而另一个...

    BlockingQueue(阻塞队列)详解

    ### BlockingQueue(阻塞队列)详解 #### 一、前言 随着现代软件系统对并发性能需求的不断提高,多线程编程技术逐渐成为开发人员不可或缺的技能之一。在Java平台中,`java.util.concurrent`包提供了丰富的工具来...

    14-阻塞队列BlockingQueue实战及其原理分析二.pdf

    阻塞队列(BlockingQueue)是一种特殊的队列,它支持两个附加操作:阻塞的插入方法put和阻塞的移除方法take。BlockingQueue继承了Queue接口,是Java 5中加入的。 BlockingQueue常用方法示例: 1. add(E e):添加一...

    BlockingQueue的使用

    BlockingQueue是Java并发编程中非常重要的一个数据结构,它是一个具有阻塞特性的队列,主要用于线程间的协作。在多线程环境下,BlockingQueue能够有效地实现生产者-消费者模式,提高了程序的并发性能和效率。本文将...

    Java中的BlockingQueue:深入理解与实践应用

    在Java并发编程中,BlockingQueue是一个非常重要的接口,它提供了线程安全的队列操作,特别是在生产者-消费者模式中发挥着核心作用。本文将深入探讨BlockingQueue的工作原理、常见实现、使用场景以及代码示例。 在...

    简单实现BlockingQueue,BlockingQueue源码详解

    BlockingQueue是Java并发编程中非常重要的一个接口,它在`java.util.concurrent`包下,是线程安全的队列,主要用于解决生产者-消费者问题。BlockingQueue的主要特点是当队列满时,生产者线程会被阻塞,直到队列有...

    Java-concurrent-collections-concurrenthashmap-blockingqueue.pdf

    Java 并发集合:ConcurrentHashMap 和 BlockingQueue Java 并发集合是 Java 语言中的一种高级hread-safe 集合框架,用于在多线程环境中实现高效、安全的数据存储和访问。其中,ConcurrentHashMap 和 BlockingQueue ...

    Java并发编程--BlockingQueue.docx

    【Java并发编程--BlockingQueue详解】 BlockingQueue 是 Java 并发包(java.util.concurrent)中的一个接口,它扩展了 Queue 接口,并引入了线程安全的特性,特别适合于多线程环境下的数据共享。 BlockingQueue 的...

    java中线程队列BlockingQueue的用法

    在Java编程中,`BlockingQueue`(阻塞队列)是一种重要的并发工具,它结合了队列的数据结构和线程同步机制。`BlockingQueue`接口位于`java.util.concurrent`包中,提供了线程安全的数据结构,可以用于实现生产者-...

    并发容器——BlockingQueue相关类

    在Java编程中,`BlockingQueue`是一个非常重要的并发容器,它是Java并发包`java.util.concurrent`中的核心组件。`BlockingQueue`实现了一种线程安全的数据结构,它能够有效地协调生产者和消费者的动作,实现高效的...

    Java 多线程与并发(16-26)-JUC集合- BlockingQueue详解.pdf

    Java中的`BlockingQueue`接口是Java并发编程的重要组件,它位于`java.util.concurrent`包下,主要用于线程间数据的同步和通信。`BlockingQueue`是一个支持线程安全的队列,它允许一个线程放入(插入)元素,而另一个...

    10、阻塞队列BlockingQueue实战及其原理分析

    阻塞队列BlockingQueue是Java并发编程中一个重要的数据结构,它是线程安全的队列,主要用于生产者消费者模型中的数据交换。在Java的`java.util.concurrent`包中,提供了多种实现阻塞队列的类,如`ArrayBlockingQueue...

    2011.08.30(2)——— java BlockingQueue ExecutorService

    标题 "2011.08.30(2)——— java BlockingQueue ExecutorService" 涉及到Java并发编程中的两个核心组件:BlockingQueue(阻塞队列)和ExecutorService。这篇博客可能深入探讨了如何使用这两个工具来优化多线程环境...

    26不让我进门,我就在门口一直等!—BlockingQueue和ArrayBlockingQueue.pdf

    —BlockingQueue和ArrayBlockingQueue.pdf” 【描述】:此文档是关于Java并发编程的学习资料,以漫画形式讲解,聚焦于Java并发编程中的核心概念——BlockingQueue接口及其具体实现ArrayBlockingQueue。 【标签】:...

    spring-blockingqueue:用Spring Boot阻止队列

    当我们谈论"Spring BlockingQueue"时,我们实际上是在讨论如何在Spring Boot应用中使用Java并发库中的BlockingQueue接口。 BlockingQueue是一种线程安全的数据结构,它在多线程环境下的数据共享和通信中扮演着关键...

    10、阻塞队列BlockingQueue实战及其原理分析.pdf

    ### 10、阻塞队列BlockingQueue 实战及其原理分析 #### 一、阻塞队列概述 阻塞队列(BlockingQueue)是Java语言中`java.util.concurrent`包下提供的一种重要的线程安全队列。它继承自`Queue`接口,并在此基础上...

    disruptor:Disruptor BlockingQueue

    Conversant ConcurrentQueue、Disruptor BlockingQueue 和 ConcurrentStack Disruptor是Java中性能最高的线程内传输机制。 Conversant Disruptor 是这种环形缓冲区中性能最高的实现,因为它几乎没有开销,并且采用了...

Global site tag (gtag.js) - Google Analytics