gpt4 book ai didi

java - 执行某些任务后为 ThreadPoolExecutor 设置自定义 RejectedExecutionHandler?

转载 作者:行者123 更新时间:2023-11-29 07:55:11 25 4
gpt4 key购买 nike

我在我的一个 Android 组件中使用 Java ThreadPoolExecutor。我的问题是:

在对 TPE 执行一些任务后,使用 setRejectedExecutionHandler() 设置 RejectedExecutionHandler 是否是一个好习惯?

我的意思是这样做有任何副作用。这是一个好的做法吗?

已编辑

我需要在 Android 中创建一个 ThreadPoolManagementLibrary 项目,供其他项目使用。现在,我需要在我的组件中公开 TPE 的公共(public)方法。如果我让用户设置 RejectedExecutionHandler 那么会不会有问题?

最佳答案

问题应该是“我们应该处理 RejectedExecutionException 吗?”。答案当然是肯定的。不这样做会使发生它的线程崩溃,即提交任务以供执行的线程,并且应用程序将在未知状态下继续运行。

第二个问题是“我们应该如何处理这个异常?”。我们应该尽可能彻底地停止应用程序。因为对于其他运行时异常(顺便说一句,错误)也是如此,一种解决方案是使用 UncaughtExceptionHandler。但是如果我们想以特定方式处理 RejectedExecutionException,我们可以使用 RejectedExecutionHandler。这可用于在停止应用程序之前执行一些特定处理(直接或通过抛出将被 UncaughtExceptionHandler 捕获的新 RuntimeException)。

这里的要点是所有的异常和错误都应该被处理。这违背了所谓的“最佳实践”,但这些实践是错误的。对于单线程应用程序,它们曾经是正确的。世界已经改变。运行时异常或错误将使发生它的线程崩溃,而不是应用程序。因此必须对其进行处理。

当然,如果您使用的是框架或应用服务器,问题可能会有所不同,因为该服务器或框架可能会为您处理未捕获的异常。

关于java - 执行某些任务后为 ThreadPoolExecutor 设置自定义 RejectedExecutionHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com