BlockingQueue实现的生产者消费者模式:10个线程生产 1个线程消费
package com.jerry.concurrency;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
public class TestBlockingQueue {
public static void main(String[] args) {
ExecutorService 生产者 =Executors.newCachedThreadPool();
ExecutorService 消费者=Executors.newCachedThreadPool();
final BlockingQueue<String> 队列 = new LinkedBlockingQueue<String>(3);
for(int i=0;i<=10;i++){
生产者.submit(new Runnable() {
@Override
public void run() {
Double d = Math.random()*1000;
try {
队列.put(d.toString());
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程"+Thread.currentThread().getName()+"放入了:"+d);
}
});
}
消费者.submit(new Runnable() {
@Override
public void run() {
try {
while (true) {
Thread.sleep((int) (Math.random() * 1000));
if(队列.isEmpty())
break;
String str = 队列.take();
System.out.println("线程"+Thread.currentThread().getName()+"取出了:"+str);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
分享到:
相关推荐
线程----BlockingQueue 的介绍说明
类似java BlockingQueue,C++写的,支持Windows与Linux。
在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue...
14-阻塞队列BlockingQueue实战及其原理分析二.pdf
定义全局线程池,将用户的请求放入自定义队列中,排队等候线程调用,等待超时则自动取消该任务,实现超时可取消的异步任务
这个demo主要讲解了BlockingQueue的使用希望可以帮户需要的同学.
简单实现BlockingQueue,BlockingQueue源码详解
10、阻塞队列BlockingQueue实战及其原理分析_
java中线程队列BlockingQueue的用法
Java-concurrent-collections-concurrenthashmap-blockingqueue.pdf
BlockingQueue支持两个附加操作的Queue:1)当Queue为空时,获取元素线程被阻塞直到Queue变为非空;2)当Queue满时,添加元素线程被阻塞直到Queue不满。BlockingQueue不允许元素为null,如果入队一个null元素,会抛...
在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文简要介绍下BlockingQueue...
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本.mp4
6.7 阻塞队列BlockingQueue 实战及其原 理分析二副本.mp4
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本副本.mp4
6.7 阻塞队列BlockingQueue 实战及其原 理分析二副本副本.mp4
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本副本副本.mp4
6.JUC并发工具类在大厂的应用场景详解 (1).pdf 7、深入理解 AQS 独占锁之 Reentrantlock 源码分析 (1).pdf 8、读写锁ReentrantReadWriteLock&StampLock详解.pdf ...10、阻塞队列BlockingQueue 实战及其原理分析.pdf
Java 多线程与并发(16_26)-JUC集合_ BlockingQueue详解