Java Renjin会话是否可重入
会话是线程安全的,但它是可重入安全的吗 该场景是从java engine.eval(“…”)调用的,该java类再次调用相同的engine.eval(“…”)方法。为了简单起见,我们假设只有一个引擎实例。是的,这是可能的 请注意,通过对原始ScriptEngine实例调用Java Renjin会话是否可重入,java,renjin,Java,Renjin,会话是线程安全的,但它是可重入安全的吗 该场景是从java engine.eval(“…”)调用的,该java类再次调用相同的engine.eval(“…”)方法。为了简单起见,我们假设只有一个引擎实例。是的,这是可能的 请注意,通过对原始ScriptEngine实例调用engine.eval(),将在全局环境中对表达式求值,并且R函数将无法看到调用Java方法的R调用堆栈 您还可以要求Renjin在调用时将当前的上下文传递给Java方法。例如: class MyJavaClass { s
engine.eval()
,将在全局环境中对表达式求值,并且R函数将无法看到调用Java方法的R调用堆栈
您还可以要求Renjin在调用时将当前的上下文
传递给Java方法。例如:
class MyJavaClass {
static SEXP estimate(@Current Context context, SEXP function) {
return context.evaluate(FunctionCall.newCall(function, IntVector.valueOf(42)));
}
}
然后:
import(MyJavaClass)
f <- function(x) x*2
MyJavaClass$estimate(f) # 84
import(MyJavaClass)
如果这真的很好,问题是让R调用“我们的引擎”,在他的查询中有R代码。这是从上下文的角度来看的。