gpt4 book ai didi

java - 工作/任务窃取 ThreadPoolExecutor

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:28 24 4
gpt4 key购买 nike

在我的项目中,我正在构建一个 Java 执行框架,用于接收来自客户的工作请求。工作(大小不一)被分解为一组任务,然后排队等待处理。有单独的队列来处理每种类型的任务,并且每个队列都与一个线程池相关联。 ThreadPools 的配置方式使引擎的整体性能达到最佳。

这种设计有助于我们有效地平衡请求的负载,并且大请求不会最终占用系统资源。然而,有时当一些队列为空并且它们各自的线程池处于空闲状态时,解决方案会变得无效。

为了让它变得更好,我正在考虑实现工作/任务窃取技术,以便负载较重的队列可以从其他线程池获得帮助。然而,这可能需要实现我自己的执行器,因为 Java 不允许多个队列与线程池相关联,并且不支持工作窃取概念。

阅读有关 Fork/Join 的内容,但这似乎不适合我的需要。构建此解决方案的任何建议或替代方法都可能非常有帮助。

谢谢安迪

最佳答案

Executors.newWorkStealingPool

Java 8 在 Executors 中提供了工厂方法和实用方法类别:Executors.newWorkStealingPool

我相信这是一个工作窃取线程池的实现,这正是您想要的。

关于java - 工作/任务窃取 ThreadPoolExecutor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153646/

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