线程化时是否多次分配java静态字段?

Dan*_*n Q 3 java memory static multithreading

我正在开发一个组项目,其中我们在Worker类中声明了几个静态常量.这个worker的多个线程被生成,我们的java应用程序似乎使用了大量的内存.我想知道这是否是每个线程分配更多这些静态常量的结果,但我不确定.

Gra*_*ray 8

不,每个ClassLoader只有一个静态变量实例.

 public class Foo {
      // only 1 of these
      private static int bar = 10;
 }
Run Code Online (Sandbox Code Playgroud)

但是,重要的是要意识到这并不意味着该值是自动同步的.如果线程正在改变这个值,那么它需要synchronized根据竞争条件看到不同的值.