共享变量和volatile变量区别

来源:4-1 volatile能够保证可见性

Kuneng

2018-08-12 13:56

共享变量和volatile变量区别

写回答 关注

3回答

  • 慕婉清3156049
    2020-05-25 01:54:21

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

  • 慕前端6229441
    2018-09-17 08:26:25

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

  • 小木头love
    2018-08-12 22:33:41

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

细说Java多线程之内存可见性

用两种方式实现内存可见性,代领大家深层次学习Java中的内存

55910 学习 · 74 问题

查看课程

相似问题