查看ScriptEngine线程安全

通过 javax.script 的接口 ScriptEngineFactory


getParameter
Object getParameter(String key)返回属性值,该属性的含义可能是特定于实现的。其值在所有实现中定义的键有:
ScriptEngine.ENGINE
ScriptEngine.ENGINE_VERSION
ScriptEngine.NAME
ScriptEngine.LANGUAGE
ScriptEngine.LANGUAGE_VERSION
用于这些键的值分别是 getEngineName、getEngineVersion、getName、getLanguageName 和 getLanguageVersion 返回的 String。

还定义了保留键 THREADING,它的值描述了与脚本并发执行和状态维护有关的引擎行为。用于 THREADING 键的值有:


null - 引擎实现不是线程安全的,并且无法用来在多个线程上并发执行脚本。

"MULTITHREADED" - 引擎实现是内部线程安全的,并且脚本可以并发执行,尽管在某个线程上执行脚本的效果对于另一个线程上的脚本是可见的。

"THREAD-ISOLATED" - 该实现满足 "MULTITHREADED" 的要求,并且引擎为不同线程上执行的脚本中的符号维护独立的值。

"STATELESS" - 该实现满足 "THREAD-ISOLATED" 的要求。此外,脚本执行不改变 Bindings 中的映射关系,该 Bindings 是 ScriptEngine 的引擎范围。具体来说,Bindings 及其关联值中的键在执行脚本之前和之后是相同的。


实现可以定义特定于实现的键。

参数:
key - 参数名
返回:
给定参数的值。如果没有为键分配值,则返回 null。

来源JDK文档


ScriptEngineManager factory = new ScriptEngineManager();

ScriptEngine engine = factory.getEngineByName("js");

ScriptEngineFactory sef=engine.getFactory();
System.out.println( sef.getParameter(ScriptEngine.LANGUAGE));
System.out.println( sef.getParameter("THREADING"));
System.out.println(engine.eval("((1+1)*9+9.6)*(8+9-8)"));


运行结果:

ECMA Script
MULTITHREADED
248.4

[size=large][b]我的实践 证明 js 的线程 内部安全的!可以设立单例模式,提高代码性能了![/b][/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值