专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 如何应对企业Java线程池面试题

如何应对企业Java线程池面试题

更新时间:2020-06-19 13:18:29 来源:动力节点 浏览1824次

Java的线程池我想大家肯定不会陌生,在工作中或者自己平时的学习中多多少少都会用到,那你真的有了解过底层的实现原理吗?还是说只停留在用的阶段呢?而且关于Java线程池也是在面试中的一个高频的面试题,就像HashMap的实现原理一样,基本上面试必问,估计都已经被问烂大街了。

如何应对企业Java线程池面试题

常用的几种线程池

我们先来看下常用的几种线程池的创建方式,以及底层采用的实现原理

单个线程:

Executors.newSingleThreadExecutor();

public static ExecutorService newSingleThreadExecutor() {
 return new FinalizableDelegatedExecutorService
 (new ThreadPoolExecutor(1, 1,
 0L, TimeUnit.MILLISECONDS,
 new LinkedBlockingQueue<Runnable>()));
 }

缓存线程:

Executors.newCachedThreadPool();

public static ExecutorService newCachedThreadPool() {
 return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
 60L, TimeUnit.SECONDS,
 new SynchronousQueue<Runnable>());
 }

固定线程:

Executors.newFixedThreadPool(2);

public static ExecutorService newFixedThreadPool(int nThreads) {
 return new ThreadPoolExecutor(nThreads, nThreads,
 0L, TimeUnit.MILLISECONDS,
 new LinkedBlockingQueue<Runnable>());
 }

定时线程:

Executors.newScheduledThreadPool(3);(父类中)

public ThreadPoolExecutor(int corePoolSize,
 int maximumPoolSize,
 long keepAliveTime,
 TimeUnit unit,
 BlockingQueue<Runnable> workQueue) {
 this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
 Executors.defaultThreadFactory(), defaultHandler);
 }

以上就是动力节点java培训机构的小编针对“如何应对企业Java线程池面试题”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>