ValueExpression线程是否安全?

时间:2012-02-13 05:40:15

标签: java multithreading thread-safety el

在我的项目中,我正在使用EL的独立jasper实现。我将libs添加到我的maven pom文件中:

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>el-api</artifactId>
        <version>6.0.32</version>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>jasper-el</artifactId>
        <version>6.0.32</version>
    </dependency>

目前我的应用程序非常慢,因为大量使用el表达式 - 它正在及时编译它应该被调用。 现在我想在初始化时移动表达式编译,但我想知道在多个线程中使用相同的ValueExpression是否是线程安全的。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

值表达式不是线程安全的。但是,EL实现应该在内部缓存已解析的表达式,并且调用ExpressionFactory.createExpression(...)应该只需要在第一次解析表达式字符串。

根据您的环境,您可能希望尝试一种性能优于Tomcat的EL实现,例如: JUEL可以显着提升效果。

答案 1 :(得分:0)

不要这样认为,除非你在常见的初始化代码中处理线程安全问题。