首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 7并发性

Java 7并发性
EN

Stack Overflow用户
提问于 2014-12-12 18:07:19
回答 2查看 188关注 0票数 0

我想以这样的方式实现Java并发API,即一次最多有4个并行线程在运行。但我应该能够将请求添加到池中,当数据/请求可用时,它将处理或维护一个队列。处理逻辑将实现FIFO,以便从池/队列中窥视请求。

例如,我有5个请求r1 ...r5。初始池将有5个请求,但它将处理r1到r3,其余将处于等待状态。一段时间后,我可以再添加3个请求r6 ...r8。如果1个请求仍在运行,则r6和r7将开始执行,r8将处于等待状态。

您能告诉我如何使用JDK 7并发API来实现这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2014-12-12 18:55:00

1/将请求使用者实现为Runnable。让他们从先进先出队列中读取请求,比如ConcurrentLinkedQueue。

2/使用java.util.concurrent.Executors.newFixedThreadPool()启动想要的请求消费者数量。

3/维护池的一端将请求写入FIFO队列。

就这样。

票数 1
EN

Stack Overflow用户

发布于 2014-12-12 19:08:12

这就是创建固定线程池的目的。他们会帮你处理队列的。您可以使用Executors.newFixedThreadPool()或直接创建ThreadPoolExecutor来创建一个。当每个请求传入时,创建一个新的Runnable任务,该任务的run()方法处理该请求。使用execute()submit()将此任务添加到您的执行器中。线程池将通过调用所有任务来工作,并且您可以在任何时候添加新任务(只要您还没有在执行器上调用shutdown() )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27441232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档