在我的项目中,我正在构建一个Java执行框架,该框架接收来自客户端的工作请求。工作(大小各异)被拆分成一组任务,然后排队等待处理。有单独的队列来处理每种类型的任务,并且每个队列都与ThreadPool相关联。 ThreadPool配置方式是优化引擎整体性能的方式。
这种设计有助于我们有效地平衡负载,避免大型请求占用系统资源。但是,在某些时候,当某些队列为空并且它们各自的线程池处于空闲状态时,解决方案变得无效。
为了使其更好,我考虑实现一种工作/任务窃取技术,以便负载较重的队列可以从其他ThreadPools获得帮助。但是,这可能需要实现自己的Executor,因为Java不��许将多个队列与ThreadPool关联,并且不支持工作窃取概念。
阅读有关Fork/Join的内容,但那似乎不适合我的需求。如果有任何建议或构建此解决方案的替代方法,那将非常有帮助。
谢谢 Andy
这种设计有助于我们有效地平衡负载,避免大型请求占用系统资源。但是,在某些时候,当某些队列为空并且它们各自的线程池处于空闲状态时,解决方案变得无效。
为了使其更好,我考虑实现一种工作/任务窃取技术,以便负载较重的队列可以从其他ThreadPools获得帮助。但是,这可能需要实现自己的Executor,因为Java不��许将多个队列与ThreadPool关联,并且不支持工作窃取概念。
阅读有关Fork/Join的内容,但那似乎不适合我的需求。如果有任何建议或构建此解决方案的替代方法,那将非常有帮助。
谢谢 Andy