【发布时间】:2011-07-23 13:01:14
【问题描述】:
当多个线程访问/修改上下文变量但无法在会话级别产生相同的行为时,我已经尝试过这种不一致。例如,在服务方法中调用 session.setAttribute("something") 方法不会导致同一 sessionid 的两个请求(这意味着两个线程)进入时出现竞争条件。是因为 Tomcat 为会话变量提供线程安全还是我有完全错了吗?
【问题讨论】:
-
我非常怀疑tomcat是否提供任何线程安全。您如何测试以多线程方式访问会话属性?我知道使用随机数并不是测试某些东西的最佳方式,但是当我测试多线程问题时,我总是在调用相关代码之前让我的线程休眠一段时间(通常是几秒钟)。只是一个想法。
-
不是一个好方法,写了一个发送相同会话ID的小程序。我似乎找不到任何资源说会话变量的线程安全是开发人员的责任,但所有讨论都建议应用程序级变量。
标签: java multithreading servlets