如何销毁Java ScriptEngine实例?

时间:2014-08-07 17:16:48

标签: java javascript scriptengine nashorn

我使用的是Java 8.我不是一名java专家(自从大学10年前以来一直没有看过java)

我创建了一个ScriptEngine的实例(Nashorn,如果重要的话)。 我用它来评估几个javascript文件。

脚本在其自己的小javascript世界中非常开心。我喜欢它。

我还运行了一个File System WatchService,以防我的一些java脚本被修改。 当它们被修改后,我创建了一个新的ScriptEngine,并使用新的ScriptEngine对象评估新版本的javascript文件。

我的问题是,我不能"杀死"一旦我创建了新的scriptEngine。旧脚本继续无限期运行。

我真的想要释放旧scriptEngine对象使用的资源。我希望它停止做它正在做的事情(因为它可能与新实例冲突,如果他们都尝试做同样的事情)。

那么......我如何完全消除旧的ScriptEngine,包括在其中生成的任何线程?

1 个答案:

答案 0 :(得分:0)

好的,漏洞的老问题。你有线程的句柄吗?有什么东西继承Thread吗?好的,那就是这样的:

private void stopThread(Thread thread) {
    final Thread moribund = thread;
    if (moribund != null) {
        thread = null;
        moribund.interrupt();
    }
}

也许有帮助。