我正在使用Java 8。虽然我不是Java专家(10年前上大学时就没再接触过Java),但我创建了一个ScriptEngine实例(如果有影响,是Nashorn)。我用它来评估多个JavaScript文件。
这个脚本在自己的小型JavaScript世界中很顺利地运行。我很喜欢它。
我还运行了一个文件系统WatchService,以防一些Java脚本被修改。当它们被修改时,我会创建一个新的ScriptEngine,并使用新的ScriptEngine对象评估JavaScript文件的新版本。
我的问题是,一旦我创建了新的ScriptEngine,就无法“终止”旧的scriptEngine。旧的脚本将无限期地运行。
我真的想释放旧的scriptEngine对象使用的资源。而且我希望它停止执行它正在做的事情(因为如果两个实例都尝试执行相同的任务,则可能会发生冲突)。
那么...如何完全消除旧的ScriptEngine,包括其中生成的任何线程?