美文网首页java程序员
二.线程安全原理简介

二.线程安全原理简介

作者: 蜗牛1991 | 来源:发表于2017-09-15 16:29 被阅读0次

一.实现线程安全的原理

  • 锁的线程安全实现原理:AQS+CAS
    • AQS:AbstractQueuedSynchronizer,简称AQS,是java.util.concurrent的核心,CountDownLatch、FutureTask、Semaphore、ReentrantLock等都有一个内部类是这个抽象类的子类,实现锁的核心。AQS是基于FIFO队列的实现。
    • Compare and swap(CAS):当前的处理器基本都支持CAS,每一个CAS操作过程都包含三个运算符:一个内存地址V,一个期望的值A和一个新值B,操作的时候如果这个地址上存放的值等于这个期望的值A,则将地址上的值赋为新值B,否则不做任何操作。
      java实现类Unsafe:Java无法直接访问底层操作系统,而是通过本地(native)方法来访问,它提供了硬件级别的原子操作。
  • AtomicInteger线程安全实现原理:CAS+volient关键字
image.png

二.AQS实现类层次关系

锁相关实现类内部抽象类Sync继承AQS,公平锁的实现FairSync类,非公平锁的实现是NonfairSync类。


image.png

三.Lock继承关系

image.png

四.cunrent包继承关系

image.png

五.aotimic包继承关系

image.png

相关文章

网友评论

    本文标题:二.线程安全原理简介

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