我的系统有数百个线程。大多数线程在给定时间内正在睡觉或等待,但他们可以随时醒来。我想减少专用于我的系统的OS线程数。 你知道一个简单的方法吗?例如,是否存在线程池包,只要线程进入睡眠模式,它就会存储状态并终止线程。每当它醒来时,它就会以旧状态开始新线程。
由于
答案 0 :(得分:10)
您是否在寻找ThreadPoolExecutor之类的内容?
执行每个的ExecutorService 使用可能的一个提交任务 通常是几个汇集的线程 使用Executors工厂配置 方法
线程池解决了两个不同的问题 问题:他们通常提供 执行时提高了性能 大量的异步任务, 由于减少了每个任务的调用 开销,他们提供了一种手段 限制和管理资源, 包括线程,消耗时间 执行一系列任务。每 ThreadPoolExecutor也维护一些 基本统计,如数字 已完成的任务。
答案 1 :(得分:1)
你描述的东西基本上就是什么线程。
现在,您可能知道您的应用程序逻辑仅依赖于一些变量,而不是线程堆栈上的所有变量。您只需要这几个变量即可从睡眠中恢复。 VM和OS无法知道,他们无法帮助您。
你必须自己做。当您的线程即将退出时,将基本状态包装起来并将其存储在队列中。然后退出线程,或将其返回到线程池。
当满足某个条件时,从队列中查找状态,根据它创建新任务,并在新线程上运行任务。
答案 2 :(得分:-1)
我的理解是,由于初始化新线程的开销,你最好让线程休眠。当线程处于休眠状态时,它不会被安排在CPU上,所以我想我并没有真正看到这个问题。