Java 如何在rejectedExecution中获取一些业务参数?

Java 如何在rejectedExecution中获取一些业务参数?,java,threadpoolexecutor,Java,Threadpoolexecutor,Java多线程执行任务,并显式构造ThreadPoolExecutor,如下所示 final ExecutorService threadPool = new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1), myRejectedExecutionHandler); 但是我怎样才

Java多线程执行任务,并显式构造
ThreadPoolExecutor
,如下所示

final ExecutorService threadPool = new ThreadPoolExecutor(nThreads, nThreads,
                0L, TimeUnit.MILLISECONDS,
                new LinkedBlockingQueue<>(1), myRejectedExecutionHandler);
但是我怎样才能得到articleId呢?因为我想将被拒绝的articleId记录在
rejectedExecution
中,例如

log.warn("article: {} is rejected, please process it manually", articleId);

我的解决方案是:不要使用自定义rejectedExecutionHandler并捕获RejectedExecutionException

catchRejectedException(()->CompletableFuture.supplyAsync(() -> articleId, threadPool), articleId);

private void catchRejectedException(Runnable task, int articleId) {
    try {
        task.run();
    } catch (RejectedExecutionException e) {
        log.error("article: {} is rejected", articleId, e);
    }
}
log.warn("article: {} is rejected, please process it manually", articleId);
catchRejectedException(()->CompletableFuture.supplyAsync(() -> articleId, threadPool), articleId);

private void catchRejectedException(Runnable task, int articleId) {
    try {
        task.run();
    } catch (RejectedExecutionException e) {
        log.error("article: {} is rejected", articleId, e);
    }
}