Я использую Java 8. Я не эксперт по Java (не смотрел на Java с колледжа 10 лет назад)
Я создаю экземпляр ScriptEngine (Nashorn, если это имеет значение). Я использую его для оценки нескольких файлов javascript.
Скрипт вполне счастливо работает в своем собственном маленьком мире javascript. Я люблю это.
У меня также запущен File System WatchService на случай, если некоторые из моих java-скриптов будут изменены. Когда они изменяются, я создаю новый ScriptEngine и оцениваю новые версии файлов javascript, используя новый объект ScriptEngine.
Моя проблема в том, что я не могу «убить» старый scriptEngine, как только создам новый. Старый скрипт продолжает работать бесконечно.
Я действительно хочу освободить ресурсы, используемые старым объектом scriptEngine. И я хочу, чтобы он перестал делать то, что он делает (поскольку он может конфликтовать с новым экземпляром, если они оба попытаются сделать одно и то же).
Итак... Как мне полностью удалить старый ScriptEngine, включая любые потоки, порожденные внутри него?