gpt4 book ai didi

java - OGNL 线程安全

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:04 25 4
gpt4 key购买 nike

我将在 Struts2 范围之外重用 OGNL 库。我有相当大的公式集,这就是为什么我想预编译所有公式:

Ognl.parseExpression(expressionString);

但是我不确定预编译表达式是否可以在多线程环境中使用。有谁知道可以用吗?

最佳答案

这个PropertyUtils OGNL 的代码被编写为线程安全的,因此我猜测编译的表达式应该是线程安全的。

进一步的证据是,大多数访问器 API 都提供可变状态作为上下文参数(例如,参见 PropertyAccessor ),因此类本身几乎没有可变状态。不可变类本质上是线程安全的。开发者指南敦促扩展是线程安全的,最后查看代码,其中存在可变状态的地方,它被保护在同步块(synchronized block)中,例如参见 EvaluationPool .

总而言之,OGNL 似乎被设计为线程安全的。是否真的是另一个问题!您可以编写一个快速测试来确定,例如使用 Concutest 。或者,如果线程数量合理,则将所有表达式存储在 ThreadLocal 中可以完全回避该问题,但会花费一点额外的内存(也可能不会,因为 OGNL 会进行表达式缓存。)

关于java - OGNL 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com