oo_*_*_oo 1 java parameters multithreading tomcat servlets
我想在servlet初始化期间(在init()方法中)读取一些参数,并将它们存储在servlet上下文属性中(使用getServletContext().setAttribute()).我想稍后阅读这些参数 - 在一些请求处理期间(使用getServletContext().getAttribute()).因此,多个线程可以同时执行此操作.我的问题是这样的尝试是否安全?我可以确定对getAttribute()的多线程调用不会搞乱servlet上下文的任何内部状态吗?
请考虑到我不会在初始化之外的任何地方调用setAttribute().因此,只能从多个线程调用getAttribute().但是根据内部实施情况,这也可能是危险的.因此,任何有关Tomcat实现的信息都将受到赞赏.
Tomcat中ServletContext的主要实现是ApplicationContext类.如果查看链接资源,您将看到属性存储在java.util.concurrent.ConcurrentHashMap实例中.所以,ApplicationContext至少getAttribute()和setAttribute()方法是线程安全的.
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |