Jython,停止从Java代码内部执行脚本

时间:2017-10-10 13:47:03

标签: java multithreading jython jython-2.7

我在我的Java应用程序中使用Jython作为脚本引擎。 我可以通过调用pi.execfile(script_name)从我的Java应用程序运行任何Jython脚本。但问题是我还需要一种方法来从Java代码手动停止脚本执行。如何在不修改Jython脚本的情况下停止它?

我在一个单独的线程中运行一个脚本,所以试图通过它来中断它 scriptRunningThread.interrupt();并捕获InterrupredException,但线程只是挂起并挂起...新创建的线程也将挂起

另一种方法 - 共享一个公共对象并使Jython脚本检查用户是否想要退出。

第三种方法是运行一个单独的进程(我的应用程序的控制台模式)并在按下STOP按钮时将其终止。但我不喜欢这个解决方案...

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

最好的方法是你的第二个想法:让Jython脚本检查终止标志,如果设置了标志就干净地退出。

如果你想从另一个线程终止线程,你可以调用Thread.stop(),但这通常是一个坏主意,因为它可能导致你的整个应用程序挂起或在某些情况下行为异常。