当前位置: 首页 > 面试题库 >

ThreadPoolExecutor 创建方法最佳实践?

那宏大
2023-03-14
本文向大家介绍ThreadPoolExecutor 创建方法最佳实践?相关面试题,主要包含被问及ThreadPoolExecutor 创建方法最佳实践?时的应答技巧和注意事项,需要的朋友参考一下

在《阿里巴巴 Java 开发手册》“并发处理”这一章节,明确指出线程资源必须通过线程池提供,不允许在应用中自行显示创建线程。

为什么呢?

使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源开销,解决资源不足的问题。如果不使用线程池,有可能会造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。

另外《阿里巴巴 Java 开发手册》中强制线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 构造函数的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险

Executors 返回线程池对象的弊端如下:

  • FixedThreadPoolSingleThreadExecutor : 允许请求的队列长度为 Integer.MAX_VALUE,可能堆积大量的请求,从而导致 OOM。
  • CachedThreadPool 和 ScheduledThreadPool : 允许创建的线程数量为 Integer.MAX_VALUE ,可能会创建大量线程,从而导致 OOM。

方式一:通过ThreadPoolExecutor构造函数实现(推荐) 通过构造方法实现 方式二:通过 Executor 框架的工具类 Executors 来实现 我们可以创建三种类型的 ThreadPoolExecutor:

  • FixedThreadPool
  • SingleThreadExecutor
  • CachedThreadPool

对应 Executors 工具类中的方法如图所示: 通过Executor 框架的工具类Executors来实现


 类似资料:
  • 本文向大家介绍Android中new Notification创建实例的最佳方法,包括了Android中new Notification创建实例的最佳方法的使用技巧和注意事项,需要的朋友参考一下 目前 Android 已经不推荐使用下列方式创建 Notification实例: 最好采用下列方式: 以上所述是小编给大家介绍的Android中new Notification创建实例的最佳方法,希望对大

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我一直在阅读有关使用PHP创建PDF文件的信息,并且想知道最简单的选择是什么。 创建PDF模板,将其打开并替换占位符文本-我应使用哪个功能打开现有PDF进行编辑

  • 问题内容: 我有一百万行.txt格式的数据。格式很简单。对于每一行: 你知道我的意思。对于每个用户,它可能出现很多次,或者只出现一次(您永远不会知道)。我需要找出每个用户的所有值。因为用户可能会随机出现,所以我使用了Hashmap来做到这一点。即:HashMap(键:字符串,值:ArrayList)。但是要向arrayList添加数据,我必须不断使用HashMap get(key)来获取array

  • 问题内容: 使类型代表一组字符串的最佳方法是什么? 我尝试了这个: 然后如何将它们用作? 问题答案: 我不知道您想做什么,但这是我实际上翻译示例代码的方式。 另外,您可以为创建一个getter方法。 你现在可以做

  • 我正在阅读有关在有效 Java 中创建不可变类时需要遵循的特定准则。 我知道在不可变类中,方法不应该被覆盖,否则被覆盖的方法可能会改变方法的行为。下面是java中解决这个问题的设计方法 > 我们可以将类标记为final,但是根据我的理解,它有一个缺点,就是使类不可扩展。 其次是使单个方法最终化,但我不能得到其他缺点,除了我们需要单独将每个方法标记为最终,以防止覆盖。 根据书本,更好的方法是使构造函

  • 问题内容: 我的表(a,b,c,d)中有四列,它们全都依赖于列(日期),所以在查询中我有: 我需要知道为所有索引创建索引的最佳方法是什么,我有两个建议: 第一个建议: 第二个建议: 请使用哪个更好。 问题答案: 这可能对您有帮助: 要索引的列应该是用于过滤的列(子句)。您可以添加以避免查询。