这是由JSR-223设计的;
eval(String)后面真的没有代码缓存。嗯,从 理论上讲
可以,但是它在开发人员想要的方面体现了很多猜测(而且所有猜测在某些时候注定是错误的)。
您应该做的是评估一下您的情况
Invocable,保持不动,然后反复使用。
这样做时,请注意Nashorn不提供线程安全性(Javascript没有线程概念,所以Nashorn故意不是线程安全的,以便在语言语义不强制要求时不必支付同步成本)。因此,
Invocable就基础脚本中全局变量的状态而言,从多个线程使用您创建的对象并不安全。(同时运行不与脚本的全局状态交互的函数就可以了。)
如果您需要在线程之间共享它, 并且 函数依赖于全局状态, 并且
全局状态可以更改,那么您需要为此添加自己的支架(同步,资源池或其他目前流行的方式)以此目的)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)