如果我声明一个变量static并将此类编译成可执行jar。如果我使用这样的批处理文件启动此类:
java MyClass
java MyClass
java MyClass
所有3个进程都会共享同一个变量吗?
答案 0 :(得分:17)
没有。静态变量特定于JVM实例。事实上 - 它特定于加载类的类加载器。因此,如果您创建了三个单独的类加载器,每个加载器负责加载MyClass
(不仅仅是委托给一些普通的父级),它们每个都在MyClass
中有一个单独的独立静态变量。
答案 1 :(得分:2)
静态资源是每个类加载器,因此,您的3个进程显然有三个不同的类加载器,因此不会共享变量。