Jython,从 Java 代码内部停止脚本执行
Jython, stop script execution from inside of Java code
我在 Java 应用程序中使用 Jython 作为脚本引擎。
我可以通过调用 pi.execfile(script_name) 从我的 Java 应用程序 运行 任何 Jython 脚本。但问题是我还需要一种方法来从 Java 代码手动停止脚本执行。如何在不修改 Jython 脚本的情况下停止它?
我运行在单独的线程中编写脚本,因此尝试通过以下方式中断它
scriptRunningThread.interrupt();并捕获 InterrupredException,但线程只是暂停并挂起...新创建的线程也会挂起
另一种方法 - 共享一个公共对象并制作 Jython 脚本来检查用户是否要退出。
第三种方法是 运行 一个单独的进程(我的应用程序的控制台模式)并在按下停止按钮时终止它。但是我不喜欢这个解决方案...
有什么建议吗?
最好的方法是您的第二个想法:让 Jython 脚本检查终止标志并在设置标志后干净地退出。
如果您想从另一个线程终止该线程,您可以调用 Thread.stop(),但这通常不是一个好主意,因为它可能会导致您的整个应用程序挂起或在某些情况下出现其他异常行为。
我在 Java 应用程序中使用 Jython 作为脚本引擎。 我可以通过调用 pi.execfile(script_name) 从我的 Java 应用程序 运行 任何 Jython 脚本。但问题是我还需要一种方法来从 Java 代码手动停止脚本执行。如何在不修改 Jython 脚本的情况下停止它?
我运行在单独的线程中编写脚本,因此尝试通过以下方式中断它 scriptRunningThread.interrupt();并捕获 InterrupredException,但线程只是暂停并挂起...新创建的线程也会挂起
另一种方法 - 共享一个公共对象并制作 Jython 脚本来检查用户是否要退出。
第三种方法是 运行 一个单独的进程(我的应用程序的控制台模式)并在按下停止按钮时终止它。但是我不喜欢这个解决方案...
有什么建议吗?
最好的方法是您的第二个想法:让 Jython 脚本检查终止标志并在设置标志后干净地退出。
如果您想从另一个线程终止该线程,您可以调用 Thread.stop(),但这通常不是一个好主意,因为它可能会导致您的整个应用程序挂起或在某些情况下出现其他异常行为。