gpt4 book ai didi

java - 具有许多阻塞任务的线程池

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:47 26 4
gpt4 key购买 nike

我正在使用一个应该能够执行数百个并发任务的线程池。然而,这些任务通常只做很少的计算,大部分时间都花在等待某些服务器响应上。因此,如果线程池大小包含数百个线程,则只有少数线程处于 Activity 状态,而大多数线程将处于等待状态。

我知道一般来说这不是线程池使用的好习惯,但当前的设计不允许让我的任务异步,这样它们就可以返回控制权而无需等待服务器的响应。因此,鉴于此限制,我想我最大的问题是线程堆栈空间的内存消耗增加。

那么有什么方法可以使用某种不消耗太多内存的轻量级线程吗?

我现在有一个 JVM 选项 -Xss 来控制堆栈内存,但似乎没有办法控制每个线程池或线程,而不是为 VM 内的所有线程更改它,对吗?

另外,对于更好地解决我的问题,您有什么建议吗?

最佳答案

I know in general this is not a good practice for thread pools usage

我不同意。我认为这是一个完美的做法。您是否看到这种方法存在问题,因为否则,从标准线程切换到我看来是过早的优化。

So is there any way to use some kind of light-weight threads that does not consume much memory?

我想你已经在那里了。线程已经相对轻量级了,除非您在非常受限的 JVM 中工作,否则我认为没有理由担心数百个线程。

Also do you have any suggestions for a better solution to my problem?

我看到的任何解决方案都会比 复杂很多,并且会再次成为过早优化的定义。例如,您可以使用 NIO 并在服务器响应可用时执行您自己的线程调度,但这是您可以通过线程免费获得的那种东西。

关于java - 具有许多阻塞任务的线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738210/

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