gpt4 book ai didi

java - ThreadPoolExecutor 和 RejectedExecutionExceptionHandler

转载 作者:行者123 更新时间:2023-12-03 12:56:32 25 4
gpt4 key购买 nike

我想为 ThreadPoolExecutor 使用有界队列但我想使用我的自定义 RejectedExecutionExceptionHandler .我需要这样做,以便我可以将被拒绝的任务放入单独的队列,并在一段时间后尝试重新提交它们。
是定制RejectedExecutionExceptionHandler我的问题的解决方案?如果是,我该如何实现?
否则,处理我的问题的最佳方法是什么?

最佳答案

我将使用无界队列,因为这会将无法运行以供以后使用的任务排队。在你的情况下,我会起诉 Executors.newFixedThreadPool 。你可能对它的作用感兴趣

public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}

注意:它使用无界队列。

恕我直言,处理问题的最简单/最好的方法是在当前线程中运行任务。

这可确保使用没有备用后台线程的当前线程及时执行所有任务。
new RejectedExecutionHandler() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
r.run();
}
}

关于java - ThreadPoolExecutor 和 RejectedExecutionExceptionHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11825165/

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