我使用的是Java 8.我不是一名java专家(自从大学10年前以来一直没有看过java)
我创建了一个ScriptEngine的实例(Nashorn,如果重要的话)。 我用它来评估几个javascript文件。
脚本在其自己的小javascript世界中非常开心。我喜欢它。
我还运行了一个File System WatchService,以防我的一些java脚本被修改。 当它们被修改后,我创建了一个新的ScriptEngine,并使用新的ScriptEngine对象评估新版本的javascript文件。
我的问题是,我不能"杀死"一旦我创建了新的scriptEngine。旧脚本继续无限期运行。
我真的想要释放旧scriptEngine对象使用的资源。我希望它停止做它正在做的事情(因为它可能与新实例冲突,如果他们都尝试做同样的事情)。
那么......我如何完全消除旧的ScriptEngine,包括在其中生成的任何线程?
答案 0 :(得分:0)
好的,漏洞的老问题。你有线程的句柄吗?有什么东西继承Thread吗?好的,那就是这样的:
private void stopThread(Thread thread) {
final Thread moribund = thread;
if (moribund != null) {
thread = null;
moribund.interrupt();
}
}
也许有帮助。