gpt4 book ai didi

java - 如何销毁 Java ScriptEngine 实例?

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:31 26 4
gpt4 key购买 nike

我正在使用 Java 8。我不是 Java 专家(自 10 年前上大学以来就没看过 Java)

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

脚本在它自己的小 javascript 世界中非常愉快地运行。我喜欢它。

我还运行了一个文件系统监视服务,以防我的一些 java 脚本被修改。当它们被修改时,我创建一个新的 ScriptEngine,并使用新的 ScriptEngine 对象评估新版本的 javascript 文件。

我的问题是,一旦我创建了新脚本引擎,我就无法“杀死”旧脚本引擎。旧脚本会无限期地运行。

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

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

最佳答案

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

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

也许有帮助。

关于java - 如何销毁 Java ScriptEngine 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com