美文网首页
Java 原子性,可见性

Java 原子性,可见性

作者: onemoremile | 来源:发表于2016-09-14 13:31 被阅读0次

原子性:最小操作执行单元,不可中断分割。int类型是原子的,long不一定是,因为long的赋值是两次赋值才能完成,

对于32位操作系统来说,单次操作能处理的最长长度为32bit,而long类型8字节64bit,所以对long的读写都要两条指令才能完成(即每次读写64bit中的32bit)。如果JVM要保证long和double读写的原子性,势必要做额外的处理。

JVM规范中,没有规定一定要原子性,32位的HotSpot没有把long和double的读写实现为原子操作。

对于64big的环境来说,单次操作可以操作64bit的数据,即可以以一次性读写long或double的整个64bit,所以是原子的。

可见性:是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。volatile变量修饰保证了可见性,但不能保证原子性。  某些需要同步的场景,若可用volatile,它比synchronized 快,因为不需要做线程上下文切换。

内存屏障

内存屏障,又称内存栅栏,是一组处理器指令,用于实现对内存操作的顺序限制

相关文章

  • Java并发学习之synchronized(一)

    synchronized 具有原子性,可见性。原子性:由java内存模型来直接保证的原子性变量操作包括read,l...

  • Java 多线程三大核心

    目录:一、 原子性二、可见性三、顺序性 一、 原子性 Java 的原子性就和数据库事务的原子性差不多,一个操作中要...

  • volatile和synchronized底层原理

    先来看 JMM java memory model java 内存模型 主要围绕:原子性,可见性,有序性。 A B...

  • Java高并发--原子性可见性有序性

    Java高并发--原子性可见性有序性 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 原子性:...

  • java并发编程要点

    Java并发问题主要有三个核心概念:原子性,可见性,顺序性。 原子性 并发问题的原子性的概念和数据库事务的原子性是...

  • Java并发编程基础

    Java并发程序的设计 并发的三大特性:原子性,可见性和有序性。 原子性 原子性指的是一个操作一旦开始就不可中断。...

  • 多线程之volatile、原子类、synchronized

    在引入volatile、原子类、synchronized前,我们先来说说Java内存模型的三大特性:可见性、原子性...

  • Java 原子性,可见性

    原子性:最小操作执行单元,不可中断分割。int类型是原子的,long不一定是,因为long的赋值是两次赋值才能完成...

  • 面试复习之Java知识解答

    Java知识复习解答 1.synchronize 和 volitale的区别;什么是可见性和原子性 可见性:当一个...

  • java初入多线程5

    volatile 与java内存模型(JMM) java的内存模型都是围绕着原子性、有序性、还有可见性来展开的。 ...

网友评论

      本文标题:Java 原子性,可见性

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