在Java 8 Nashorn JavaScript引擎中同时加载脚本以加快启动是否有意义?即使脚本不修改全局变量,它会不会出现任何问题?我在javax.script.ScriptEngine
javadocs中找不到任何信息。
此外,当同时从多个线程调用engine.eval(...)
时,Nashorn本身可以并行加载脚本吗?这样做是否安全?如果没有,那么在脚本加载过程中添加并行性的整个想法就注定了。
答案 0 :(得分:2)
将编译脚本文件(懒惰地或急切地)编译为CompiledScript然后评估它们可能是一个好习惯。
以下是示例代码:https://github.com/xqbase/util/tree/master/src/main/java/com/xqbase/util/script
Nashorn不是线程安全的,以及像v8这样的许多JS引擎。但是,如果全局变量是线程安全的,那么同时调用CompiledScript.eval()似乎没有问题。
请参阅另一个问题Java Scripting With Nashorn (JSR 223) & Pre-compilation