gpt4 book ai didi

java - Web应用程序中Java静态成员的范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:17 25 4
gpt4 key购买 nike

Java 静态变量是否在同一 Web 应用程序的实例之间共享?

class MyClass
{
private static SomeClass myStaticObject = new SomeClass();
}

如果网络应用程序使用 MyClass 并且该应用程序的多个实例在网络服务器上运行,myStaticObject 是否被多次初始化?

最佳答案

通常,是的。大多数容器将为每个 Web 应用程序提供单独的类加载器。这将导致类在被多个应用程序使用时被多次加载,从而导致静态变量的多个实例。

说明 Java Language Specification供引用:

At run time, several reference types with the same binary name may be loaded simultaneously by different class loaders. These types may or may not represent the same type declaration. Even if two such types do represent the same type declaration, they are considered distinct.

据此推断,静态变量的多个实例将存在,除非类仅由父类加载器加载一次,并且从未被任何其他类加载器加载到别处。

关于java - Web应用程序中Java静态成员的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com