Java面试篇基础部分-Java中5种常用的线程池

  Java中定义了一个Executor的接口并且在接口中定义了execute()方法用来执行一个线程任务。然后通过ExecutorService实现了Executor接口用来执行具体的线程操作。

在这里插入图片描述
  ExecutorService接口实现了多个类用来创建不同的线程池,其中最常见的线程池有如下几种

  • newCachedThreadPool 可以缓存的线程池
  • newFixedThreadPool 可固定大小的线程池
  • newScheduleThreadPool 可以用来任务调用的线程池
  • newSingleThreadExecutor 单线程的线程池
  • newWorkStealingPool 足够大小的线程池,属于JDK1.8新增的内容

在这里插入图片描述

newCachedThreadPool

  newCachedThreadPool用来创建一个缓存线程池,为什么叫做缓存线程池,因为在创建新线程的时候如果存在可以重用的线程,就启动重用这些线程,如果没有的话就需要重新创建一个线程并且将这个线程添加到线程池中。

  在实际开发中会遇到一些执行时间相对较短的任务,newCachedThreadPool 线程池的这种重用机制可以大大地提升系统的执行效率。

  在线程池在KeepAliveTime时间超过默认时间之后,这个线程就会被终止,并且从缓存中进行移除,所以这样一来在没有线程执行的时候,newCachedThreadPool线程池不会占用系统的线程资源,可以节省一部分的线程资源。

  该线程池具体的创建方法如下

public static ExecutorService newCachedThreadPool() {
   
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nihui123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值