如何销毁Java ScriptEngine实例?

Bre*_*sen 5 javascript java scriptengine nashorn

我正在使用Java 8.我不是java专家(10年前从未上过java)

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

这个脚本在它自己的小javascript世界中非常开心.我喜欢它.

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

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

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

那么......我如何完全消除旧的ScriptEngine,包括它内部产生的任何线程?

小智 0

好的,线程泄漏的老问题。你有线程的句柄吗?是否有东西继承Thread?好的,然后是这样的:

private void stopThread(Thread thread) {
    final Thread moribund = thread;
    if (moribund != null) {
        thread = null;
        moribund.interrupt();
    }
}
Run Code Online (Sandbox Code Playgroud)

也许有帮助。