`

2011.08.30(2)——— java BlockingQueue ExecutorService

阅读更多
2011.08.30(2)——— java BlockingQueue ExecutorService
参考:http://www.iteye.com/topic/366591
http://topic.csdn.net/u/20091226/16/b1337a92-a4a2-463e-a04e-7226e5fa78d2.html

并发库中的BlockingQueue是一个比较好玩的类,顾名思义,就是阻塞队列。该类主要提供了两个方法put()和take(),前者将一个对象放到队列尾部,如果队列已经满了,就等待直到有空闲节点;后者从head取一个对象,如果没有对象,就等待直到有可取的对象。


package com.lp;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;


public class MyBlockingQueue extends Thread{
	public static BlockingQueue<String> queue=new LinkedBlockingQueue<String>(3);
	private int index;
	public MyBlockingQueue(int i){
		this.index=i;
	}

	public void run(){
		try{
			queue.put(String.valueOf(this.index));
			System.out.println("put {"+this.index+"} into queue!");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static void main(String args[]){
		ExecutorService service=Executors.newCachedThreadPool();
		for( int i=0; i<10; i++){
			service.submit(new MyBlockingQueue(i));
		}
		Thread thread = new Thread(){
			public void run(){
				try{
					while(true){
						Thread.sleep((int)(Math.random()*1000));
						if(MyBlockingQueue.queue.isEmpty()) break;
						String str=MyBlockingQueue.queue.take();
						System.out.println("take {" + str+"} out of queue!");
					}
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		};
		service.submit(thread);
		service.shutdown();
	}
	
}




分享到:
评论

相关推荐

    java并发工具包 java.util.concurrent中文版用户指南pdf

    2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 SynchronousQueue 8. 阻塞...

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf

    java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    并发容器——BlockingQueue相关类

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

    java-chatroom.rar_java 传送文件_java 群聊_java 聊天_群聊_聊天 文件 java

    Java中的`java.util.concurrent`包提供了`BlockingQueue`或`ExecutorService`等工具,可以用来处理并发消息的发送与接收。服务器端会维护一个用户列表,并将新消息广播给所有在线用户。客户端则持续连接到服务器,...

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版

    2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 SynchronousQueue 8. 阻塞...

    java_chat.rar_java 聊天室_java聊天室_java聊天室程序_java鑱婂ぉ_java鑱婂ぉ瀹

    这需要一种机制来遍历所有用户线程并发送消息,可能需要用到Java的并发工具,如ExecutorService和BlockingQueue。 5. **数据序列化**:在发送和接收消息时,通常需要将消息对象转换为字节流进行网络传输,这就涉及...

    java并发工具包 java.util.concurrent中文版pdf

    其中包括但不限于线程池(`ExecutorService`)、阻塞队列(`BlockingQueue`)、原子变量类(`AtomicInteger`, `AtomicLong` 等)、并发容器(`ConcurrentHashMap`, `ConcurrentLinkedQueue` 等)以及未来/延迟结果...

    java并发工具包详解

    2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 Synchronou sQueue 8. ...

    JAVA中文文档.chm.zip

    6. **并发编程**:Java提供强大的并发编程支持,包括线程、同步机制(synchronized关键字、wait()和notify()方法)、死锁避免、并发工具类(如ExecutorService、Future、BlockingQueue)等,文档会详细解析这些内容...

    Java 的 HTTP 文件队列下载.rar_java http_java 下载_java 队列

    这通常涉及到线程管理和同步机制,例如Java的`java.util.concurrent`包中的`ExecutorService`和`BlockingQueue`。队列用于存储待下载的任务,而线程池则负责执行这些任务。 以下是一个简单的HTTP文件队列下载流程:...

    JAVA多线程框架.pdf

    `ExecutorService.execute()`方法用于提交任务到线程池,即使在任务数量超过线程池大小时,也不会阻塞,而是将超出的Runnable实例放入一个无界的BlockingQueue中。这种设计使得线程池能够处理大量并发任务,而不会...

    Java并发编程--BlockingQueue.docx

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

    java并发包资源

    2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 SynchronousQueue 8. 阻塞...

    基于java中BlockingQueue的使用介绍

    **基于Java中的BlockingQueue使用介绍** Java的并发编程框架提供了多种高级并发工具,其中BlockingQueue是一种非常实用的数据结构,它实现了生产者-消费者模式。在多线程环境下,BlockingQueue可以高效地处理线程间...

    java面试——上海-拼多多-Java高级.zip

    这份压缩包文件"java面试——上海-拼多多-Java高级.zip"包含了针对Java高级开发人员的面试问题和解答,帮助应聘者准备面试。以下是根据标题、描述和标签提炼出的一些核心Java知识点,这些内容通常会在拼多多的面试中...

    java.util.concurrent 学习ppt

    Java.util.concurrent是Java 5.0引入的一个重要包,它为多线程编程提供了一组高级并发工具。这个包的设计者是Doug Lea,它的出现是JSR-166的一部分,也被称作Tiger更新。Java.util.concurrent的引入是为了解决传统...

    java面试——厦门-中软国际-Java中级.zip

    【Java中级面试知识点详解】 在Java面试中,中级开发者需要具备扎实的基础知识,以及对一些高级特性和设计模式的理解。以下是一些核心的Java中级面试知识点: 1. **内存管理与垃圾回收**: - 理解Java内存模型...

    米哈游笔试题目-Java方向.docx

    import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; public class SafeBlockingQueue&lt;T&gt; { private final BlockingQueue&lt;T&gt; queue; public SafeBlockingQueue(int ...

    java中线程队列BlockingQueue的用法

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

Global site tag (gtag.js) - Google Analytics