Java 中的静态变量和多线程
2022-09-01 17:58:32
类的静态成员是否仅作为每个进程或线程的单个实例存在?这意味着每个线程都有自己的类的静态成员变量的副本吗?
我的猜测是每个进程,我是对的吗?
类的静态成员是否仅作为每个进程或线程的单个实例存在?这意味着每个线程都有自己的类的静态成员变量的副本吗?
我的猜测是每个进程,我是对的吗?
类的静态成员是否仅作为每个进程或线程的单个实例存在?
static
字段每个类加载器都有一个值,但我认为您的问题的重点在于以下内容:
每个线程都有自己的类的静态成员变量的副本
这是正确的,尽管魔鬼在细节中。每个线程都可以在其自己的本地内存空间/缓存中拥有自己的字段副本,除非该字段已标记,强制字段被内存屏障包围,从而导致每次访问/更新时的内存同步。volatile
如果没有 ,对字段的任何更新和读取都将对本地线程存储进行,并且只有在线程越过内存障碍时才更新。如果没有内存屏障,就无法保证数据操作的顺序以及何时与其他线程共享更新。volatile
static