gpt4 book ai didi

java - 所有任务完成后spring boot应用程序不退出

转载 作者:行者123 更新时间:2023-12-03 12:47:19 24 4
gpt4 key购买 nike

这是我的应用程序类 -

@EnableAutoConfiguration
@SpringBootApplication
@Configuration
public class Application implements CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(Application.class);

@Autowired
private ITestService3 testService3;

public static void main(String[] args) {
System.exit(SpringApplication.exit(SpringApplication.run(Application.class, args)));

@Override
public void run(String... strings) throws Exception {
testService3.multiThreadTest();
}
}

方法 -
public void multiThreadTest() {
ThreadPoolExecutor readExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
List<String> files = listFiles(new File("/Users/admin/filesList"), new ArrayList<>());
for (String file : files) {
readExecutor.execute(new FileParser(file));
}
}

即使在读取所有文件后,应用程序也不会终止
但是当我使用

System.exit(SpringApplication.exit(SpringApplication.run(Application.class, args)));



应用程序终止,所有线程都被杀死。

当我使用 -

SpringApplication.run(Application.class, args).close();



即使在应用程序说这之后线程继续运行 -

org.springframework.context.annotation.AnnotationConfigApplicationContext@6eda5c9: startup date [Mon Aug 15 04:42:02 IST 2016]; root of context hierarchy 2016-08-15 04:42:05.390 INFO 36600 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown



然后我必须手动终止该应用程序。应用程序以代码 130 退出

有人可以帮助我优雅地关闭应用程序。

谢谢

最佳答案

首先,您没有关闭 ExecutorService正确,您的 multiThreadTest应该看起来像:

public void multiThreadTest() throws InterruptedException {
ThreadPoolExecutor readExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
List<String> files = listFiles(new File("/Users/admin/filesList"), new ArrayList<>());
for (String file : files) {
readExecutor.execute(new FileParser(file));
}

readExecutor.shutdown();
readExecutor.awaitTermination(5, TimeUnit.MINUTES); // wait for tasks to complete
readExecutor.shutdownNow();
}

关于java - 所有任务完成后spring boot应用程序不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947487/

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