java - Tomcat : shared static variables and methods across sessions.

标签 java multithreading tomcat7

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

最佳答案

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

如果一个线程可以写入另一个线程正在读取的变量,那么您就遇到了需要小心处理的并发控制问题。

但是请注意,当一个线程写入的变量在内存中与其他线程读取的变量相邻时,在特定类型的硬件上可能存在上述情况的异常(exception)。在这种情况下,它们可能位于同一个“缓存行”中——从 RAM 读取并缓存的内存单元,在这种情况下,读取器和写入器之间可能会出现争用,因为硬件无法判断它们没有访问相同的位置。

谷歌上的术语是“虚假共享”。

关于java - Tomcat : shared static variables and methods across sessions.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37944629/

相关文章:

java - 创建类的 jar 以发送 JAVA 对象

vb.net - 由于后台工作导致主窗体卡住

ssl - NGINX 转发 ssl 背后的 Tomcat 7

python - 在中间件中通过 set_urlconf 和 request.urlconf 修改 Django urlconf 是否安全?

jsf-2 - com.sun.faces.context.flash.ELFlash.loggingGetPhaseMapForReading 处的 java.lang.NullPointerException

java - 部署到 Apache 7.0.54 和 java 8 时,Spring 上下文初始化失败并出现 java.lang.IllegalArgumentException

java - 从 IntelliJ Idea 2018.1 到 Glassfish 5.0.1 的应用程序未部署

java - JSON 没有标识符,我如何从中获取信息?

java - 用Grails 3处理 token

c - 在多个线程中独立运行 Boehm GC