gpt4 book ai didi

java - 是否可以有一组线程池共享来自一个大线程池的线程而不是创建新线程?

转载 作者:行者123 更新时间:2023-11-30 08:52:14 30 4
gpt4 key购买 nike

是否可以有一组线程池共享来自一个大线程池的线程而不是创建新线程?

在我们的 RESTful API 应用程序中,一个请求可能涉及多个并行任务。为了提高性能,我们希望在具有固定数量(比如 200)线程的线程池中执行并行任务。但是我们也想限制每个请求可以使用的最大线程数。所以我在想是否有可能为每个请求创建一个具有最大池大小的子线程池,它不会自己创建线程但会尝试从全局线程池中获取一个新线程并将作业放入队列(如果有)没有可用的线程。

有人做过类似的事情吗?或者还有其他更好的解决方案吗?

谢谢!!

最佳答案

考虑执行器而不是线程池。执行器由两部分组成:作业队列和线程池。您需要的是为每个具有作业队列但没有线程的请求的轻量级执行程序。相反,它将作业从其队列传递给主执行器(拥有所有线程)。诀窍是轻量级执行器计算它已经向主执行器提交了多少作业,并在数量超过限制时停止传递作业。每个作业在传递给主执行程序之前,都被包装在一个 Runnable 类型的对象中,该对象 a) 具有对父轻量级执行程序的引用,b) 执行包装的作业,以及 c) 在作业运行时通知引用的执行程序完成以便执行器可以将另一个作业传递给主执行器(或者如果队列中没有作业,则只需减少作业计数器)。

关于java - 是否可以有一组线程池共享来自一个大线程池的线程而不是创建新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249392/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com