OptaPlanner 后台线程未终止

OptaPlanner background thread not terminating

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

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

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

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

或者更好的是,在 ARM 块中使用它:

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

SolverManager 是 ThreadPool 的包装器。就像需要显式关闭 ThreadPool 一样,SolverManager 也是如此(因此它可以关闭其内部 ThreadPool)。