gpt4 book ai didi

java - 在 Java 中是否有更简单的方法来知道被拒绝的任务(由执行器)是否已作为 "CallerRunsPolicy"运行?

转载 作者:行者123 更新时间:2023-12-02 03:37:09 29 4
gpt4 key购买 nike

我正在使用 Spring,并且我已经使用 CallerRunsPolicy 设置了一个 ThreadPoolTask​​Executor(用于频繁运行类似且重复的任务)。由于我正在构建的功能的性质,我可能会生成许多任务并需要异步运行。

由于队列已超出其容量,这些任务将在调用者的线程中运行。我需要一种方法来查找哪些任务在调用者的线程中运行。我知道,在运行时,我可以调用执行器上的方法来确定队列是否已满,然后任何新任务都将遵循 CallersRunPolicy,但我想知道是否还有其他方法可以做到这一点?

最佳答案

定义您自己的RejectedExecutionHandler并将其传递到下面的构造函数中。

ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long 
keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory, RejectedExecutionHandler handler)

MyRejectedExecutionHandler的示例代码

public class MyRejectedExecutionHandler extends CallerRunsPolicy{
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
// Add your code to log Runnable details.
super.rejectedExecution(r, executor);
}

}

关于java - 在 Java 中是否有更简单的方法来知道被拒绝的任务(由执行器)是否已作为 "CallerRunsPolicy"运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37305553/

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