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();
}
}
分享到:
相关推荐
2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 SynchronousQueue 8. 阻塞...
java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
在Java编程中,`BlockingQueue`是一个非常重要的并发容器,它是Java并发包`java.util.concurrent`中的核心组件。`BlockingQueue`实现了一种线程安全的数据结构,它能够有效地协调生产者和消费者的动作,实现高效的...
Java中的`java.util.concurrent`包提供了`BlockingQueue`或`ExecutorService`等工具,可以用来处理并发消息的发送与接收。服务器端会维护一个用户列表,并将新消息广播给所有在线用户。客户端则持续连接到服务器,...
2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 SynchronousQueue 8. 阻塞...
这需要一种机制来遍历所有用户线程并发送消息,可能需要用到Java的并发工具,如ExecutorService和BlockingQueue。 5. **数据序列化**:在发送和接收消息时,通常需要将消息对象转换为字节流进行网络传输,这就涉及...
其中包括但不限于线程池(`ExecutorService`)、阻塞队列(`BlockingQueue`)、原子变量类(`AtomicInteger`, `AtomicLong` 等)、并发容器(`ConcurrentHashMap`, `ConcurrentLinkedQueue` 等)以及未来/延迟结果...
2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 Synchronou sQueue 8. ...
6. **并发编程**:Java提供强大的并发编程支持,包括线程、同步机制(synchronized关键字、wait()和notify()方法)、死锁避免、并发工具类(如ExecutorService、Future、BlockingQueue)等,文档会详细解析这些内容...
这通常涉及到线程管理和同步机制,例如Java的`java.util.concurrent`包中的`ExecutorService`和`BlockingQueue`。队列用于存储待下载的任务,而线程池则负责执行这些任务。 以下是一个简单的HTTP文件队列下载流程:...
`ExecutorService.execute()`方法用于提交任务到线程池,即使在任务数量超过线程池大小时,也不会阻塞,而是将超出的Runnable实例放入一个无界的BlockingQueue中。这种设计使得线程池能够处理大量并发任务,而不会...
【Java并发编程--BlockingQueue详解】 BlockingQueue 是 Java 并发包(java.util.concurrent)中的一个接口,它扩展了 Queue 接口,并引入了线程安全的特性,特别适合于多线程环境下的数据共享。 BlockingQueue 的...
2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 PriorityBlockingQueue 7. 同步队列 SynchronousQueue 8. 阻塞...
**基于Java中的BlockingQueue使用介绍** Java的并发编程框架提供了多种高级并发工具,其中BlockingQueue是一种非常实用的数据结构,它实现了生产者-消费者模式。在多线程环境下,BlockingQueue可以高效地处理线程间...
这份压缩包文件"java面试——上海-拼多多-Java高级.zip"包含了针对Java高级开发人员的面试问题和解答,帮助应聘者准备面试。以下是根据标题、描述和标签提炼出的一些核心Java知识点,这些内容通常会在拼多多的面试中...
Java.util.concurrent是Java 5.0引入的一个重要包,它为多线程编程提供了一组高级并发工具。这个包的设计者是Doug Lea,它的出现是JSR-166的一部分,也被称作Tiger更新。Java.util.concurrent的引入是为了解决传统...
【Java中级面试知识点详解】 在Java面试中,中级开发者需要具备扎实的基础知识,以及对一些高级特性和设计模式的理解。以下是一些核心的Java中级面试知识点: 1. **内存管理与垃圾回收**: - 理解Java内存模型...
import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; public class SafeBlockingQueue<T> { private final BlockingQueue<T> queue; public SafeBlockingQueue(int ...
在Java编程中,`BlockingQueue`(阻塞队列)是一种重要的并发工具,它结合了队列的数据结构和线程同步机制。`BlockingQueue`接口位于`java.util.concurrent`包中,提供了线程安全的数据结构,可以用于实现生产者-...