IO密集型和CPU密集型任务的线程配置

最近在学习Java线程池的时候,创建线程池的api中需要制定线程数。这个不能胡乱制定否则对服务的性能影响很大,需要根据任务的性质来决定

根据任务所需要的cpu和io资源的量可以分为
  • CPU密集型任务:  主要是执行计算任务,响应时间很快,cpu一直在运行,这种任务cpu的利用率很高
  • IO密集型任务:主要是进行IO操作,执行IO操作的时间较长,这是cpu出于空闲状态,导致cpu的利用率不高
为了合理最大限度的使用系统资源同时也要保证的程序的高性能,可以给CPU密集型任务和IO密集型任务配置一些线程数。
CPU密集型:线程个数为CPU核数。这几个线程可以并行执行,不存在线程切换到开销,提高了cpu的利用率的同时也减少了切换线程导致的性能损耗
IO密集型:线程个数为CPU核数的两倍。到其中的线程在IO操作的时候,其他线程可以继续用cpu,提高了cpu的利用率 

你可能感兴趣的:(java)