Tomcat:跨会话共享静态变量和方法。

时间:2016-06-21 12:36:25

标签: java multithreading tomcat7

据我所知,静态变量和方法在不同的会话中共享。剂量这种行为可能会导致性能下降,例如当不同的会话正在读取静态var或同时调用静态变量时。

2 个答案:

答案 0 :(得分:0)

只要没有其他线程正在写入该变量,多个线程读取同一个变量或同时调用相同的方法时,通常不会有性能损失。

如果一个线程可以编写另一个线程正在读取的变量,那么您需要仔细处理并发控制问题。

但是,请注意,当一个线程写入的变量在内存中与其他线程读取的变量相邻时,上述特定类型的硬件可能存在异常。在这种情况下,它们可能位于相同的"缓存行" - 从RAM读取并缓存的内存单元,在这种情况下,读卡器和编写器之间可能存在争用,因为硬件无法判断它们是否访问了相同的位置。 / p>

可转让的术语是" false sharing"。

答案 1 :(得分:0)

简单地“跨会话使用静态变量”本身并不具有性能影响。但是,您需要关注一个堂兄关注的问题。

将同时访问您从多个用户会话中读取/写入的字段。这意味着您需要使对象线程安全(如果您要写入这些静态字段,那将是必要的)。 可能会对性能产生直接影响。