【发布时间】:2012-04-28 14:26:05
【问题描述】:
我在线程池中以最小阈值执行三种类型的任务 A、B、C:
- (A) 70 %
- (B) 20 %
- (C) 10 %
池大小:100 个线程。
如何在任何给定时间确保以下分布:
- 没有空闲线程:例如,如果只存在 C 类任务,则池将是 100% C 的
- 没有饥饿:B 和 C 任务最终会得到服务
【问题讨论】:
-
你有多少个内核?除非您有 100 多个内核,否则可能总会有足够的任务让您的内核保持忙碌。对于 CPU 密集型任务,线程数多于内核数可能会更慢。
-
100这个数字只是为了方便。
-
如果你让 C 足够大以使用每个核心,其他线程是否空闲并不重要(快速其他线程空闲更好)
标签: java threadpool priority-queue