在Java 8 Nashorn JavaScript引擎中同时加载脚本是否有意义

时间:2014-11-20 05:51:11

标签: java javascript concurrency java-8 nashorn

在Java 8 Nashorn JavaScript引擎中同时加载脚本以加快启动是否有意义?即使脚本不修改全局变量,它会不会出现任何问题?我在javax.script.ScriptEngine javadocs中找不到任何信息。

此外,当同时从多个线程调用engine.eval(...)时,Nashorn本身可以并行加载脚本吗?这样做是否安全?如果没有,那么在脚本加载过程中添加并行性的整个想法就注定了。

1 个答案:

答案 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