gpt4 book ai didi

java - 使用@PreDestroy关闭@Bean ExecutorService

转载 作者:行者123 更新时间:2023-12-01 16:45:28 25 4
gpt4 key购买 nike

我有一个 Spring @Configuration 类,如下所示:

@Configuration
public class ExecutorServiceConfiguration {

@Bean
public BlockingQueue<Runnable> queue() {
return ArrayBlockingQueue<>(1000);
}

@Bean
public ExecutorService executor(BlockingQueue<Runnable> queue) {
return ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, queue);
}

@PreDestroy
public void shutdownExecutor() {
// no executor instance
}
}

我还想指定一个 @PreDestroy 方法来关闭 ExecutorService。但是,@PreDestroy 方法不能有任何参数,这就是为什么我无法将 executor bean 传递给此方法以关闭它的原因。在 @Bean(destroyMethod = "...") 中指定 destroy 方法也不起作用。它允许我指定现有的 shutdownshutdownNow,但不能指定我打算使用的自定义方法。

我知道我可以直接实例化队列和执行器,而不是作为 Spring bean,但我宁愿这样做。

最佳答案

我喜欢内联定义类:

@Bean(destroyMethod = "myCustomShutdown")
public ExecutorService executor(BlockingQueue<Runnable> queue) {
return new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, queue) {
public void myCustomShutdown() {
...
}
};
}

关于java - 使用@PreDestroy关闭@Bean ExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52402274/

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