10

如果我声明一个变量 static 并将这个类编译成一个可执行的 jar。如果我使用这样的批处理文件开始这个类:

java MyClass
java MyClass
java MyClass

所有 3 个进程会共享相同的变量吗?

4

2 回答 2

20

不可以。静态变量特定于 JVM 实例。事实上,不仅如此 - 它特定于加载类的类加载器。因此,如果您创建了三个单独的类加载器,每个都负责加载MyClass(不仅仅是委托给某个共同的父级),它们每个都有一个单独的、独立的静态变量在MyClass.

于 2012-04-29T12:47:56.837 回答
2

静态资源是每个类加载器,因此,您的 3 个进程显然具有三个不同的类加载器,因此不会共享变量。

于 2012-04-29T12:49:47.347 回答