【发布时间】:2017-02-16 04:23:40
【问题描述】:
我正在尝试构建ExecutorService 的实现,我们称之为SequentialPooledExecutor,具有以下属性。
SequentialPooledExecutor的所有实例共享同一个线程池对
SequentialPooledExecutor的同一实例的调用按顺序执行。
换句话说,实例在开始处理其队列中的下一个任务之前等待当前正在执行的任务终止。
我目前正在自己实施SequentialPooledExecutor,但我想知道我是否在重新发明轮子。我研究了ExecutorService 的不同实现,例如Executors 类提供的那些,但我没有找到满足我要求的实现。
你知道我是否缺少现有的实现,还是我应该继续自己实现接口?
编辑:
我觉得我的要求不是很清楚,看看能不能用其他语言来解释一下。
假设我有一系列会话,比如 1000 个(我之前称为执行器实例的东西)。我可以将任务提交到会话,并且我希望保证提交到同一会话的所有任务都按顺序执行。但是,属于不同会话的任务不应相互依赖。
我想定义一个 ExecutorService 来执行这些任务,但使用有限数量的线程,比如说 200,但确保在同一会话中的前一个任务完成之前不会启动任务。
我不知道是否有任何现有的东西已经这样做了,或者我是否应该自己实现这样的ExecutorService。
【问题讨论】:
-
为什么需要线程池?如果要按顺序调用它们,则只需要一个。我错过了什么?
-
@Erik 看下面的评论
-
您肯定需要一些自定义实现。但是你的问题很有趣,你可以写另一个问题,包括你的设计细节和你遇到的任何问题。
标签: java multithreading threadpool executorservice threadpoolexecutor