springboot 项目线程池销毁
时间: 2023-06-28 15:09:09 浏览: 243
在 Spring Boot 项目中,线程池的销毁通常是在应用程序关闭时进行的。可以使用 `@PreDestroy` 注解来标记一个方法,以便在应用程序关闭时执行清理操作。在这个方法中,您可以调用线程池的 `shutdown()` 方法来停止所有正在运行的任务,并等待它们完成。
以下是一个示例代码,演示了如何在 Spring Boot 应用程序中销毁线程池:
```java
import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Component
public class MyThreadPool {
private ExecutorService executorService;
public MyThreadPool() {
executorService = Executors.newFixedThreadPool(10);
}
public void execute(Runnable task) {
executorService.execute(task);
}
@PreDestroy
public void destroy() {
executorService.shutdown();
try {
executorService.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
```
在这个例子中,我们在 `MyThreadPool` 类中创建了一个固定大小的线程池,并通过 `execute` 方法提交任务。在 `destroy` 方法中,我们调用了线程池的 `shutdown()` 方法来停止所有正在运行的任务,并等待它们完成。我们使用 `awaitTermination` 方法等待线程池中的任务完成,最长等待 5 秒钟。如果超时,则强制中断等待线程。
请注意,这是一个简单的示例,您需要根据您的具体需求进行调整。
阅读全文