我想通过使用用户可编辑的Groovy scriptlet扩展我们的Java应用程序脚本功能。
我的问题是Java Scripting API文档对API使用模式有点简洁。
所以我的用例是:有很多Groovy脚本(没有编码结构或对象,只是逐行的过程代码)需要在多线程环境中完全分离和隔离运行,它们是给出的一些对象可以使用Bindings(因此应该可以在不同的输入参数上并行运行相同的脚本,并且我保证输入参数不是相同的对象实例)。而且我还想创建一些可以在每个脚本中使用的常用功能。
我的问题是:
我认为Java API的这一部分是高度无证的......
答案 0 :(得分:4)
线程行为在JSR 223 spec的SCR.4.3.5.1节中描述。 groovy引擎报告自己是多线程的:
import javax.script.*
def engine = new ScriptEngineManager().getEngineByName("groovy")
assert engine.factory.getParameter("THREADING") == "MULTITHREADED"
这意味着在多个线程中使用脚本引擎是安全的,只要脚本本身是线程安全的。
对于常见功能,只需将它们放入类中并将它们导入到脚本中即可。