Java中四种线程池的用法

 

 

  1. newFixedThreadPool 创建一个一定数量线程的线程池,如果需要同时执行的任务数超出了这个数量,则将这些任务存放在队列中,这些任务始终都是由线程池中的这些线程来执行
    使用:Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
    Runtime.getRuntime().availableProcessors()可以参考https://blog.csdn.net/jiafu1115/article/details/40430709
    这个线程中的线程数不会清除,始终会驻留
  2. newCachedThreadPool 创建的线程池,基本上线程数没有上线(最大值Interger. MAX_VALUE),需要注意不要添加太多的线程
    如果长时间没有往线程池中提交任务,即如果工作线程空闲了指定的时间(默认为1分钟),则该工作线程将自动终止。终止后,如果你又提交了新的任务,则线程池重新创建一个工作线程。
  3. newSingleThreadExecutor 创建一个只有一个线程的线程池,所有任务都会由一个线程来执行,
    如果这个线程异常结束,会有另一个取代它,保证顺序执行。
    当没有任务执行时,这个线程就会被关闭,再次有任务执行时,就会再次创建一个线程
  4. newScheduleThreadPool 创建一个定长的线程池,而且支持定时的以及周期性的任务执行,类似于Timer。具体不太熟悉,我没有使用过

如果想自己验证这些线程池的特点,可以自己用官方提供的监控工具来测试和验证

工具在你的jdk目录:jdk1.8.0_131\bin\jvisualvm.exe

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值