您的位置: 首页 > 面试技巧

面试题: 创建线程池有哪几种方式?

来源:华信智原  |  发布时间:2021-06-10  |  浏览量:438

面试题:创建线程池有哪几种方式?

①、newFixedThreadPool(int nThreads)

创建固定长度的线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而结束时,线程池会补充一个新的线程。

特点:

  • 核心线程数==最大线程数(没有救急线程被创建),因此也无需超时时间;

  • 阻塞队列是无界的,可以放任意数量的任务

适合任务量已知,相对耗时的任务

②、newCachedThreadPool()

创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收空闲线程,而当需求增加时,则可以添加新线程,线程池的规模不存在任何限制。

特点:

  • 核心线程数是0,最大线程数是Integer.MAX_VALUE,救急线程的空闲生存时间是60s,意味着:

    • 全是救急线程(60s可以回收)

    • 救急线程可以无限创建

  • 队列采用了SynchronousQueue实现,特点是:

    • 它没有容量,没有线程来取是放不进去的(一手交钱,一首交货)

整个线程池表现为线程数会根据任务量不断增长,没有上限,当任务执行完毕后,空闲1分钟后释放线程。适合任务数比较密集,但每个任务执行时间较短的情况。

③、newSingleThreadExecutor()

这是一个单线程的Exectuor,它创建单个工作线程来执行任务,如果这个线程异常结束,会创建一个新的来替代它;它的特点是能够确保依照任务在队列中的顺序来串行执行。

④、newScheduledThreadPool(int corePoolSize)

创建一个固定长度的线程池,而且以延迟或定时的方式来执行任务,类似于Timer。


相关新闻

24小时报名热线

400-7777-699

报名热线:400-7777-699

微博

微信公众号

友情链接 :智原在线   美味学院   安徽新华电脑   安徽新华教育

华信智原(官网)|京ICP备09028087号-8|咨询热线:400-7777-699|地址:北京海淀区北三环中路44号院爱工场文化教育产业园|版权所有:北京华信智原教育技术有限公司
在线报名 学费详情 开班信息 职业护航 视频下载

小小华想和您聊一聊