据我所知,静态变量和方法在不同 session 之间共享。这种行为可能会导致性能下降,例如当不同的 session 同时读取静态变量或调用静态变量时。
最佳答案
只要没有其他线程写入该变量,多个线程同时读取同一变量或调用同一方法通常不会造成性能损失。
如果一个线程可以写入另一个线程正在读取的变量,那么您就遇到了需要小心处理的并发控制问题。
但是请注意,当一个线程写入的变量在内存中与其他线程读取的变量相邻时,在特定类型的硬件上可能存在上述情况的异常(exception)。在这种情况下,它们可能位于同一个“缓存行”中——从 RAM 读取并缓存的内存单元,在这种情况下,读取器和写入器之间可能会出现争用,因为硬件无法判断它们没有访问相同的位置。
谷歌上的术语是“虚假共享”。
关于java - Tomcat : shared static variables and methods across sessions.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37944629/