【问题标题】:Does it make sense to load scripts concurrently in Java 8 Nashorn JavaScript engine在 Java 8 Nashorn JavaScript 引擎中同时加载脚本有意义吗
【发布时间】:2015-01-17 21:42:33
【问题描述】:

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

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

【问题讨论】:

  • 您是否对它进行了基准测试,看看它有多大的不同?

标签: java javascript concurrency java-8 nashorn


【解决方案1】:

将您的脚本文件(懒惰地或急切地)编译为 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

【讨论】:

  • 感谢您的回答和链接。
猜你喜欢
  • 1970-01-01
  • 2019-01-22
  • 2016-07-04
  • 2018-09-19
  • 2015-03-03
  • 2017-07-09
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多