【发布时间】:2012-02-26 15:10:19
【问题描述】:
我通过javax.script API 使用Rhino 1.6r2。我知道 Rhino 引擎声称是 MULTITHREADED: “引擎实现是内部线程安全的,脚本可以同时执行,尽管脚本在一个线程上执行的效果可能对其他线程上的脚本可见。”
我想知道的是,一个脚本执行的效果在什么确切条件下对另一个脚本执行是可见的?在我的代码中,我有时会重复使用ScriptEngine 对象,但对于每次执行,我都会创建一个新的SimpleBindings 并将其传递给eval(String, Bindings)。通过这种安排,内部状态是否可以从一个执行泄漏到另一个执行?如果有,怎么做?
There's a very informative answer here,但它并没有完全告诉我我需要知道什么。
【问题讨论】:
-
你绑定的是同一个对象吗?
-
如果我为多次执行绑定同一个对象,那么显然它对所有人都是可见的。但是不,我不会那样做。
-
那么您到底想弄清楚什么?如果您对不同的绑定对象使用不同的绑定,那么您还关心什么状态?
-
@wort - 我更多地考虑由脚本创建或修改的状态,而不是从 Java 传递到脚本中。如果我在脚本中声明一个全局变量,该变量的范围是什么?如果我修改一些内置的全局变量会发生什么?这些东西是由 javax.script API 指定的,还是由引擎实现者决定的?
-
this 你在找什么吗?
标签: java javascript rhino