线程池相关的几个面试问题解析
Posted 码农每日一题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池相关的几个面试问题解析相关的知识,希望对你有一定的参考价值。
问:为什么很多 Java 规范都建议不要显式的创建 Thread,而使用线程池?
答:因为使用线程池的好处是减少在创建和销毁线程上所消耗的时间和系统资源,解决资源不足的问题,如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者过渡切换问题。
问:为什么不建议在代码中直接使用 Executors 创建线程池,而是推荐通过 ThreadPoolExecutor 方式创建?
答:其实不直接使用工具类的目的只有一个,那就是可以明确的让我们知道线程池的运行规则,避免使用工具类的包装而不够直观内部机制而导致潜在的问题。譬如使用 Executors 的 FixedThreadPool 和 SingleThreadPool 创建线程池的原理都允许请求的队列长度为 Integer 的最大值,这样的话可能会堆积大量的请求导致 OOM;而使用 Executors 的 CachedThreadPool 和 ScheduledThreadPool 创建线程池的原理都允许创建线程数量为 Integer 的最大值,这样的话可能会导致创建大量的线程而导致 OOM,所以推荐直接通过明确的构造参数创建线程池,这样就相当与时刻提醒自己的线程池特性是什么。
与本篇问题相关的历史推送题目还有:
《》
看完不过瘾?看完还想看?本号主打短小精干,那就点击阅读原文查看本号历史经典技术知识点题目推送,解锁更多基础知识~
以上是关于线程池相关的几个面试问题解析的主要内容,如果未能解决你的问题,请参考以下文章