美文网首页
JUC解析-原子操作

JUC解析-原子操作

作者: nosmatch | 来源:发表于2018-03-23 10:58 被阅读0次

JUC是java.util.concurrent包的简称,主要包含了jdk中多线程相关的技术,例如锁、信号、线程安全的容器、线程池等,本节内容为JUC的基础-原子操作。

为什么会有原子操作

在多线程中,指令的执行在很多情况下会被打断,导致结果的不确定性,例如中断、线程的抢断以及多核SMP系统中程序的并发执行等,因此在这种情况下怎样对一些共享的资源进行原子操作就至关重要,当前的原子操作主要可以通过软件和硬件方式实现。

1. 在以前的X86系统中,在硬件层面主要是通过在指令中通过LOCK前缀锁总线实现,但是由于总线是通用的,因此效率会比较低,当前大多数的x86处理器都是通过锁定缓存行来保证原子性,但是如果操作的数据扩越了多个缓存行,还是要使用总线锁定的方式保证原子性。

2. 在java中原子性主要是通过锁和CAS(compare-and-swap)实现,其中CAS就是通过CMPXCHG指令实现的,实现的基本原理就是循环进行CAS操作直到成功为止。

 java中的原子操作

1. 在32位的jvm中,除了long和double类型为,其他的赋值操作都会原子的。

2. 在64位的jvm中,所有赋值操作都是原子的。

3. volitle修饰的long和double在32位jvm下回保证原子性。

4. 所有referenc的赋值。

5. 善于使用java.util.concurrent.atomic.*包下的原子操作类。

相关文章

  • JUC解析-原子操作

    JUC是java.util.concurrent包的简称,主要包含了jdk中多线程相关的技术,例如锁、信号、线程安...

  • Java高并发系列——检视阅读(四)

    JUC中原子类 JUC中原子类介绍 什么是原子操作? atomic 翻译成中文是原子的意思。在化学上,我们知道原子...

  • Java原子类

    1、原子类的分类 原子操作是指一个不可中断的操作。 原子类是指具有原子操作特征的类。 JUC并发包中的原子类都存放...

  • 使用CAS引发ABA问题

    由于CAS原子操作性能高,因此其在JUC包中被广泛引用,只不过如果使用得不合理,CAS原子操作就会存在ABA问题。...

  • 多线程并发编程4-原子操作类源码剖析

    今天来讲一讲原子操作类,JUC包提供了一系列的原子性操作类,这些操作类使用的是CAS非阻塞算法实现的,相比于锁...

  • [Java]重学Java-原子类

    JUC包下的原子类 JUC就是大名鼎鼎的java并发包,我们今天来看看基于非阻塞性算法的CAS封装的原子类.JUC...

  • JUC中Atomic原子操作简介

    当在多线程情况时,同时更新一个共享变量,可能得不到预期的结果。通常我们会使用synchronized来解决这个问题...

  • 多线程进阶篇

    1、JUC原子类 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;...

  • JUC

    JUC volatile关键字 不具备“互斥性”。 不能保证变量的“原子性” 内存可见性问题:当多个线程操作共享数...

  • juc并发包集合整理

    JUC提供了java并发编程需要的类,主要分几个大模块1 原子类操作2 锁3 阻塞队列4 并发集合5 同步器6 线...

网友评论

      本文标题:JUC解析-原子操作

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