Graal Javascript-线程安全

时间:2019-04-13 03:17:03

标签: javascript java multithreading graalvm graaljs

在多线程应用程序中使用Graal.js的推荐方法是什么(例如每个servlet请求)?我们正在这样使用Graal.js

jsContext = Context.newBuilder("js").allowAllAccess(true).build();
bindings = jsContext.getBindings("js");
jsContext.eval("js", jsCodeString);

每个执行线程都应该有唯一的上下文/绑定。这可以通过上下文/绑定对池或使用threadlocal来完成。这是这样做的正确方法吗?

1 个答案:

答案 0 :(得分:1)

您不应同时从多个线程访问一个Context。因此,您提出的解决方案(一组Context或线程本地Context s)是实现此目的的有效方法。

graalvm/graaljs存储库contains一些与线程相关的示例。您可以在ExecutorsTest中看到本地线程Context的用法。

仅供参考:有blog-post关于使用Graal JavaScript进行多线程处理,可能会澄清您可能遇到的其他问题。