例如,我在同一台计算机上有2个线程池。一个用于IO密集型任务(例如remoteReading和remoteWriting,我们称之为ReadWritePool
),另一个用于CPU密集型任务(让我们称之为ComputationPool
)。 ReadWritePool
的最大池大小为20.而ComputationPool
的池大小为5。
然后我有一个4核CPU。我想为ComputationPool
分配3个核心,为ReadWritePool
分配1个核心。我这样做是因为我不希望ReadWritePool
中的线程与线程CompuationalPool
竞争,而允许同一池内的竞争。
将不同类型的任务分成这样的不同池是一种好习惯吗?如果是这样,如何设置线程池可以使用的最大CPU核心?