gpt4 book ai didi

java - 动态更改 ThreadPoolExecutor 的 corePoolSize

转载 作者:行者123 更新时间:2023-12-01 09:38:51 26 4
gpt4 key购买 nike

假设有一个线程池运行在一台有 4 个 CPU 的机器上,我想对该池进行负载动态控制。当池中有一些线程正在运行时,是否可以更改 corePoolSize?即当负载较低时,最多允许2个线程同时运行,而当负载较高时,则允许4个线程同时运行。如果不行,有没有合适的解决办法?

最佳答案

Could it be possible to change the corePoolSize when there are some threads running in the pool?

当然。 corePoolSize标记为volatileThreadPoolExecutor所以你可以调用tpe.setCorePoolSize(...)随时根据机器的负载进行调整。您甚至可以在池中生成一个作业来 hibernate 、检查负载并调整核心池大小。当然,您需要向核心大小添加另一个线程来执行此操作。

That is, when the load is low, 2 threads at most are allowed to run simultaneously, but when the load is high, 4 threads are allowed.

这听起来不错,但值得注意的是,只有当您发送到线程池的作业完全受 CPU 限制时,这才真正有意义。任何 IO(磁盘、网络等)都意味着减少并发性没有多大意义。

这就是说,尽管我编写了大量线程应用程序,但我从未觉得我必须这样做。

关于java - 动态更改 ThreadPoolExecutor 的 corePoolSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38615704/

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