在我的Jetty服务中,我有一个触发大量线程的端点。我目前正在使用ThreadExecutorPool
来执行我的Runnable
。但我希望能够知道每个请求到端点的剩余工作数量,并允许多个并发请求。
我的想法是为每个请求做一个单独的队列,并且有一种执行器,它只是以循环方式从每个队列中拉出来。我想知道这样的东西是否存在,开箱即用。
请注意,我不关心执行顺序。我所关心的是每个请求(即会话)都给予相同的时间,并且对于每个会话,我可以找出尚未启动/完成的线程数。
所以我猜一个MultiQueueExecutor或类似的东西?
答案 0 :(得分:0)
但我希望能够知道每个请求到端点的剩余工作数量,并允许多个并发请求。
我会恰好将Future
与ExecutionCompletionService
结合使用。如果您使用ECS,您的Web请求将在每个任务完成后立即得到通知,以便他们始终知道剩余的任务数量。
我关心的是每个请求(即会话)都有相同的时间,并且对于每个会话,我可以找出尚未启动/完成的线程数。
确保“平等时间”并不存在,并且在将作业提交给线程池时,存在竞争条件,因为它具有FIFO性质。此解决方案是否有效取决于您对相关信息的处理方式。