page contents

static volatile 的区别

Pack 发布于 2020-02-18 16:49
阅读 456
收藏 0
分类:Java开发

虽说,static是针对实例共享
volatile是针对线程共享
没明白:
static的数据存储在方法区
volatile 的数据存储在local variable,但是都是从主内存中 实时同步。

问题一:static感觉也是线程同步共享的呢?
问题二:那主内存是存在哪里呢?

390
Pack
Pack

static和volatile都是修饰在类的成员变量中的。static是类级别,存放在方法区。 非static的成员属性属于对象级别,存放在堆内存。 这就是所谓的主内存。

当多线程访问共享内存(堆内存)中的数据时,就可能存在可见性问题,所以需要加volatile修饰。

请先 登录 后评论