在多线程应用程序中使用Graal.js的推荐方法是什么(例如每个servlet请求)?我们正在这样使用Graal.js
jsContext = Context.newBuilder("js").allowAllAccess(true).build();
bindings = jsContext.getBindings("js");
jsContext.eval("js", jsCodeString);
每个执行线程都应该有唯一的上下文/绑定。这可以通过上下文/绑定对池或使用threadlocal来完成。这是这样做的正确方法吗?
答案 0 :(得分:1)
您不应同时从多个线程访问一个Context
。因此,您提出的解决方案(一组Context
或线程本地Context
s)是实现此目的的有效方法。
graalvm/graaljs
存储库contains一些与线程相关的示例。您可以在ExecutorsTest中看到本地线程Context
的用法。
仅供参考:有blog-post关于使用Graal JavaScript进行多线程处理,可能会澄清您可能遇到的其他问题。