gpt4 book ai didi

Java 线程池超额订阅

转载 作者:搜寻专家 更新时间:2023-10-31 19:49:41 24 4
gpt4 key购买 nike

我主要有在线程池上运行的 CPU 密集型操作。然而,操作有一定数量的等待外部事件,这些外部事件不会及时统一发生。因为在 Java 中,据我所知,没有一个线程池实现可以根据观察到的任务吞吐量自动调整线程数量(如在 Microsoft 的 CLR 4 中),是否至少有一种方法可以手动告诉线程池当阻塞操作开始时增加它的大小并在它结束时减小它的大小?

例如,对于 8 个核心,池大小为 8。 如果操作是 100% CPU 绑定(bind),则只需使用此固定池。 如果有一些阻塞操作,应该可以这样做:

pool.increase();
waitForSpecialKeyPress();
pool.decrease();

这是在 Microsoft 的 C++ 异步库中是如何完成的:Use Oversubscription to Offset Latency

最佳答案

您可以扩展 ThreadPoolExecutor 以添加您自己的 increase()decrease() 函数,它们执行简单的 setMaximumPoolSize(getMaximumPoolSize () +/- 1)

确保同步方法,以确保您不会意外弄乱池大小。

关于Java 线程池超额订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5638399/

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