有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java OptaPlanner后台线程未终止

我们在一个独立的Java应用程序中运行OP(v8.11.1.Final)(因此我们可以对其进行评估),但我们注意到,一旦解算器完成并返回解决方案,JVM将不会终止。在我们从保持JVM活动的main方法返回后,似乎有一个后台线程仍在运行。解决这个问题的唯一方法是执行System.exit(),这似乎不是一个很好的解决方案

以下是仍处于活动状态的线程列表。我猜其中一些是JVM管理线程,但仍有一些东西在运行,导致了这个问题

enter image description here

有什么想法吗?如果你需要更多信息,请告诉我。提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    使用完后,请调用SolverManager.close()。 在Quarkus和Spring Boot中,这种情况会自动发生

    或者更好的方法是,在手臂挡块中使用它:

    try (SolverManager<...> solverManager : SolverManager.create(...)) {
        ...
    }
    

    SolverManager是线程池的包装器。就像线程池需要显式关闭一样,SolverManager也需要显式关闭(这样它就可以关闭其内部线程池)