美文网首页
volatile关键字解析

volatile关键字解析

作者: 非文666 | 来源:发表于2018-12-19 17:28 被阅读0次

    一. 并发编程的三个概念

    1 原子性
    一个操作不可以被打断,要么全部执行要么不执行,说明这个操作具有原子性。
    Java中赋基本类型的值、读取值的操作是具有原子性的。
    例如:
    i=10;
    i=i+10;
    i++;
    i =j;
    以上几个操作只有第一个是原子性的。
    2 可见性
    可见性涉及到计算机的内存模型,相对应到Java多线程上,是每个线程有自己的工作内存,除此之外还有各个线程公用的主内存。当其中一个线程改变了程序的一个共享变量,其他的线程能立刻读到这个变量的新值,就是具有可见性。
    3 有序性
    cpu为了运行的高效率可能对指令进行重排,Java虚拟机没有去掉这一特性,他这个重排序对单线程是没有影响的,因为这个重排序不会影响最后的执行结果,但是多线程可能会出现莫名其妙的错误。

    volatile可以保证变量的可见性,修饰共享变量后主要做了如下操作:

    • 改变值立即将值刷入主存
    • 设置其他线程的读取标示,当其他线程看到这个标示后,会首先去主存中拿变量值

    相关文章

      网友评论

          本文标题:volatile关键字解析

          本文链接:https://www.haomeiwen.com/subject/iogjkqtx.html