单个执行程序的单独执行队列,用于跟踪剩余的数据

时间:2017-02-14 23:45:10

标签: java multithreading java-8

在我的Jetty服务中,我有一个触发大量线程的端点。我目前正在使用ThreadExecutorPool来执行我的Runnable。但我希望能够知道每个请求到端点的剩余工作数量,并允许多个并发请求。

我的想法是为每个请求做一个单独的队列,并且有一种执行器,它只是以循环方式从每个队列中拉出来。我想知道这样的东西是否存在,开箱即用。

请注意,我不关心执行顺序。我所关心的是每个请求(即会话)都给予相同的时间,并且对于每个会话,我可以找出尚未启动/完成的线程数。

所以我猜一个MultiQueueExecutor或类似的东西?

1 个答案:

答案 0 :(得分:0)

  

但我希望能够知道每个请求到端点的剩余工作数量,并允许多个并发请求。

我会恰好将FutureExecutionCompletionService结合使用。如果您使用ECS,您的Web请求将在每个任务完成后立即得到通知,以便他们始终知道剩余的任务数量。

  

我关心的是每个请求(即会话)都有相同的时间,并且对于每个会话,我可以找出尚未启动/完成的线程数。

确保“平等时间”并不存在,并且在将作业提交给线程池时,存在竞争条件,因为它具有FIFO性质。此解决方案是否有效取决于您对相关信息的处理方式。