是否有任何可能的方法从 RejectedExecutionHandler 获取 args
Is there any possible ways to get args from RejectedExecutionHandler
这里我有一个问题。
我正在覆盖我的线程池 RejectedExecutionHandler
,我想处理超出线程池的线程,这些线程对于线程池来说太多了,并且将被丢弃策略忽略,然后打印日志以显示哪个线程被丢弃。
我已经解决了如何在使用像 executor.submit(runnable)
这样的显式调用时完成它
但是在处理用 @Async
注释的方法时,似乎不可能实现参数,尽管我可以在任务的 arg2 中看到它们,如下所示:
到目前为止,我不知道如何获得这 2 个参数,一旦线程对我的线程池来说太多了,我就不知道要检查哪个线程和哪个参数被
丢弃了
我只能得到一个线程 ID 和线程名称……这不是我想要的。
请救救我!非常感谢!
非常感谢@kriegaex 的提示!
到目前为止,我已经解决了这个问题。
Here 是我在 github 中关于如何自定义 RejectedExecutionHandler
并打印已满线程池丢弃的任务的关键日志的解决方案。
目前支持@Async
,普通Runnable
和Callable
,自定义任务实现了我自定义的接口IRejectFreeExecutable
,还有Runnable
和Callable
以匿名方式调用。
测试代码在 AsyncController
我没有考虑 Runnable
或 Callable
被 FutureTask
或其他东西包裹的情况。
我认为可以根据这些现有解决方案解决问题。
这里我有一个问题。
我正在覆盖我的线程池 RejectedExecutionHandler
,我想处理超出线程池的线程,这些线程对于线程池来说太多了,并且将被丢弃策略忽略,然后打印日志以显示哪个线程被丢弃。
我已经解决了如何在使用像 executor.submit(runnable)
这样的显式调用时完成它
但是在处理用 @Async
注释的方法时,似乎不可能实现参数,尽管我可以在任务的 arg2 中看到它们,如下所示:
到目前为止,我不知道如何获得这 2 个参数,一旦线程对我的线程池来说太多了,我就不知道要检查哪个线程和哪个参数被
丢弃了
我只能得到一个线程 ID 和线程名称……这不是我想要的。
请救救我!非常感谢!
非常感谢@kriegaex 的提示!
到目前为止,我已经解决了这个问题。
Here 是我在 github 中关于如何自定义 RejectedExecutionHandler
并打印已满线程池丢弃的任务的关键日志的解决方案。
目前支持@Async
,普通Runnable
和Callable
,自定义任务实现了我自定义的接口IRejectFreeExecutable
,还有Runnable
和Callable
以匿名方式调用。
测试代码在 AsyncController
我没有考虑 Runnable
或 Callable
被 FutureTask
或其他东西包裹的情况。
我认为可以根据这些现有解决方案解决问题。