gpt4 book ai didi

java - 为什么 Spring 应用程序在 main 方法的末尾不存在

转载 作者:行者123 更新时间:2023-12-01 23:06:40 27 4
gpt4 key购买 nike

我开始使用 Spring 学习 Java,并且编写了一些简单的计划任务。

我不明白框架使用的机制,因此应用程序在 getBean 调用后不会退出。为什么应用程序一直打印“Hi”?

public class Application {

public static void main(String[] args) {
...
PeriodicTask task = appCtx.getBean(PeriodicTask.class);
}
}
public class PeriodicTask {

@Scheduled(fixedRate = 5000)
public void periodic() {
System.out.println("Hi");
}
}

最佳答案

鉴于@Scheduled,我假设您的ApplicationContext有一些预定的配置。这意味着您正在(隐式或显式)创建一个生成非守护线程的 SchedulerExecutorService。在所有非守护线程完成之前,应用程序不会结束。其中一个线程每 5000 毫秒执行一次periodic 方法。

现在,您可以将 ApplicationContext 实例化放入 try-with-resources 中。一旦执行离开 try block ,ApplicationContext 将关闭,从而关闭 ScheduledExecutorService 并最终终止您的程序。

关于java - 为什么 Spring 应用程序在 main 方法的末尾不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22645933/

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