是否有任何可能的方法从 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,普通RunnableCallable,自定义任务实现了我自定义的接口IRejectFreeExecutable,还有RunnableCallable以匿名方式调用。

测试代码在 AsyncController

我没有考虑 RunnableCallableFutureTask 或其他东西包裹的情况。

我认为可以根据这些现有解决方案解决问题。