java静态变量和进程

时间:2012-04-29 12:46:17

标签: java

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

java MyClass
java MyClass
java MyClass

所有3个进程都会共享同一个变量吗?

2 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:2)

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