我正在制作一个 CSP 求解器,它可以计算像这样的特定问题的所有组合解决方案(简而言之):
// Say we are in a Solver class
public void solve() {
// find solution...
}
// This would be in a Problem class
problem.getSolver().solve();
解决过程很有可能需要很长时间才能完成,比如几分钟以上。到目前为止,当它花了这么长时间时,我刚刚通过控制台停止了这个过程。
但最终我会将我的应用程序作为 Web 应用程序发布在允许 Java 应用程序的主机中(附带问题:我已经看到我可以在Google Cloud中做到这一点,并且我也被告知 AWS;它们是不错的选择吗?) . 这意味着如果需要太长时间,我或用户将无法再终止该过程。
我想添加可以随意取消解决过程的功能。
因此,我将在 Solver 类中声明一个新方法,该方法将终止该过程,这将有效地停止解析过程:
public void stopResolutionProcess() {
// kill the process, therefore, stop the resolution process
}
我不能problem.getSolver().stopResolutionProcess()
在解析过程已经开始之后才调用,因为线程已经在运行并且在该过程结束之前,该方法调用将永远不会被执行。
那么我该怎么做呢?客户端如何向托管在云中的服务发出信号以终止正在运行的进程?