为了账号安全,请及时绑定邮箱和手机立即绑定

共享变量和volatile变量区别

共享变量和volatile变量区别

正在回答

3 回答

共享变量是对于多线程而言的,多个线程访问同一个变量,需要先把他从主内存拷贝到自己的工作内存中,读写的操作都是在工作内存与主内存之间进行的,工作内存与工作内存之间无法交互。
volatile是为了保证线程A对于共享变量的修改,对其他线程B线程C是立即可见的。对于这一点,volatile符合两个规则:1.线程A在修改共享变量后将其同步到主内存中 2.线程BC在使用这个共享变量前,先从主内存刷新得到最新的值。所以很神奇,volatile变量在使用时总是能拿到最新的值。

0 回复 有任何疑惑可以回复我~

共享变量是在多线程操作的情况下,对某一个变量都有进行操作,该变量存储在主存中,但是在多线程的工作内存中都有一个副本,所以该变量是共享的,即为共享变量。
volatile变量是被该关键字修饰的变量。在单线程中也可以用来修饰变量,但是没有意义。用在多线程中,是为了保证被其修饰的变量对于多线程来说都是内存可见的。
在多线程中,volatile用来修饰共享变量,实现共享变量的可见性。

1 回复 有任何疑惑可以回复我~

我理解的是其实这个两种类型的变量在主内存中是一样的,只是在多线程的情况下,volatile修饰变量在线程操作前,会执行store和load方法,这样把主内存中的变量同步到了工作内存中。我自己的理解,不知道对不对。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

共享变量和volatile变量区别

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信