减少具有多个睡眠线程时使用的OS线程数

问题描述

| 我有一个带有数百个线程的系统。大多数线程在给定的时间内处于睡眠或等待状态,但是它们可以随时随地唤醒。我想减少专用于我的系统的OS线程的数量。 您知道一种简单的方法吗?例如,是否有一个线程池程序包,每当线程进入睡眠模式时,它都会存储状态并杀死线程。每当它唤醒时,它将以旧线程的状态启动新线程。 谢谢     

解决方法

        您是否正在寻找ThreadPoolExecutor之类的东西?   一个执行每个的ExecutorService   使用以下可能之一提交任务   几个池化线程,通常   使用执行器工厂配置   方法。      线程池解决两个不同的问题   问题:他们通常会提供   执行时提高了性能   大量的异步任务,   由于减少了每个任务的调用   开销,它们提供了一种   限制和管理资源,   包括线程,在   执行任务的集合。每   ThreadPoolExecutor还维护一些   基本统计数据,例如数字   完成的任务。     ,        您所描述的基本上是什么线程。 现在,您可能知道应用程序逻辑仅取决于几个变量,而不取决于线程堆栈上的所有变量。您只需要这几个变量即可从睡眠中恢复。 VM和OS对此一无所知,也无法为您提供帮助。 您必须自己做。当线程即将退休时,将基本状态包装起来并存储在队列中。然后退出线程,或将其返回到线程池。 当满足特定条件时,从队列中查找状态,基于该队列创建一个新任务,然后在新线程上运行该任务。     ,        我的理解是,由于初始化新线程会产生开销,因此最好让线程进入睡眠状态。当线程处于休眠状态时,它不会在CPU上进行调度,因此我想我并没有真正看到问题。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...