配置线程池可以从以下几个方面考虑。
- 任务是cpu密集型、IO密集型或者混合型
- 任务优先级,高中低。
- 任务时间执行长短。
- 任务依赖性:是否依赖其他系统资源。
cpu密集型可以配置可能小的线程,比如 n + 1个线程。
io密集型可以配置较多的线程,如 2n个线程。
混合型可以拆成io密集型任务和cpu密集型任务,
如果两个任务执行时间相差大,否->分解后执行吞吐量将高于串行执行吞吐量。
否->没必要分解。
可以通过Runtime.getRuntime().availableProcessors()来获取cpu个数。
建议使用有界队列,增加系统的预警能力和稳定性。配置线程池可以从以下几个方面考虑。
- 任务是cpu密集型、IO密集型或者混合型
- 任务优先级,高中低。
- 任务时间执行长短。
- 任务依赖性:是否依赖其他系统资源。
cpu密集型可以配置可能小的线程,比如 n + 1个线程。
io密集型可以配置较多的线程,如 2n个线程。
混合型可以拆成io密集型任务和cpu密集型任务,
如果两个任务执行时间相差大,否->分解后执行吞吐量将高于串行执行吞吐量。
否->没必要分解。
可以通过Runtime.getRuntime().availableProcessors()来获取cpu个数。
建议使用有界队列,增加系统的预警能力和稳定性。