首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何销毁Java ScriptEngine实例?

如何销毁Java ScriptEngine实例?
EN

Stack Overflow用户
提问于 2014-08-08 01:16:48
回答 1查看 1.1K关注 0票数 5

我使用的是Java 8。我不是java专家(从10年前上大学开始就没看过java )。

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

这个脚本在它自己的javascript小世界里运行得相当愉快。我爱死它了。

我还有一个正在运行的文件系统WatchService,以防我的一些java脚本被修改。当它们被修改时,我创建一个新的ScriptEngine,并使用新的ScriptEngine对象对新版本的javascript文件求值。

我的问题是,一旦我创建了新的scriptEngine,我就不能“杀死”旧的one。旧的脚本一直在无限期地运行。

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

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

EN

回答 1

Stack Overflow用户

发布于 2014-08-08 01:25:44

好的,旧的问题与泄漏的线程。你拿到线的把手了吗?有什么东西继承了线程吗?好的,然后是这样的:

代码语言:javascript
复制
private void stopThread(Thread thread) {
    final Thread moribund = thread;
    if (moribund != null) {
        thread = null;
        moribund.interrupt();
    }
}

也许这会有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25188452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档