我有许多优先级为 A
、B
和 C
的传入任务,我想在多核上用线程池处理这些任务中央处理器。 70% 的 CPU 应该用于处理“type A
”任务,20% 的 CPU 用于“type B
”任务,10% 的 CPU 用于“type C
' 任务。
但是,如果只有“类型 C
”的任务到达,则应该将 100% 的 CPU 分配给它们。如果只有任务 B
和 C
到达,则 66% 将处理任务 B
和 33% 任务 C
等。 ..
您将如何在 Java 中实现它?
附注: 优先队列将不起作用,因为只有类型的任务才会被处理。此外,为线程分配优先级也行不通,因为它不准确。
最佳答案
也许你应该使用 3 个线程池。 1 个包含 7 个线程的池用于 A 任务,1 个包含 2 个线程的池用于 B 任务,1 个包含 1 个线程的池用于 C 任务。
编辑:即使只有 C 任务(或者,如果你有很多处理器,如果你只有 B 和 C 任务)也有并行性,将每个池中的线程数乘以处理器数,或者处理器数量 + 1,或您喜欢的任何其他更大的因素。
关于java - 处理线程池中不同优先级的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646958/