gpt4 book ai didi

java - 退出应用程序时如何关闭所有Executor?

转载 作者:搜寻专家 更新时间:2023-10-30 21:37:26 27 4
gpt4 key购买 nike

根据 Brian Goetz 的 Java Concurrency in Practice JVM 在所有(非守护进程)线程终止之前无法退出,因此未能关闭 Executor 可能会阻止 JVM 退出。

即如果周围有 Executors,System.exit(0) 不一定会按预期工作。似乎有必要放一些

public void stop() { exec.shutdown() }

所有包含执行器的类的方法,然后在应用程序即将终止时调用它们。这是唯一的方法,还是有某种捷径可以关闭所有执行程序?

最佳答案

没有捷径可以完成所有这些,不。此外,您可能应该调用 shutdownNow() 而不是 shutdown(),否则您可能需要等待一段时间。

我想,您可以做的是,当您创建执行器时,将其注册在一个中心位置。然后,在关闭时,只需对该中心对象调用 shutdown(),这又可以终止每个已注册的执行程序。

如果您使用 Spring,那么您可以利用它的工厂 bean 为您创建和管理执行器。这包括在应用程序退出时优雅地关闭它们,从而避免您必须自己管理它们。

关于java - 退出应用程序时如何关闭所有Executor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211657/

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