美文网首页java.juc
JUC java并发包

JUC java并发包

作者: JaJIng | 来源:发表于2019-02-23 16:09 被阅读0次

1. JUC 简介

在 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,

用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中

的 Collection 实现等;

JUC包

JUC提供的一些实现:

    Atomic : AtomicInteger  原子操作类

    Locks : Lock, Condition, ReadWriteLock  可重入读写锁

    Collections : Queue, ConcurrentMap 并发集合

    Executer : Future, Callable, Executor 线程执行池,异步Future等

    Tools : CountDownLatch, CyclicBarrier, Semaphore 减数器,等待器,信号量

2.JUC 核心

java提供了synchonized关键字实现悲观锁机制,以求指令原子性,内存可见性,操作互斥性

但是synchonized锁机制会导致性能下降,控制的颗粒度也粗,所以JUC的核心理念是不通过重量级的synchonized来解决并发问题

我个人理解的JUC三大核心是 :

1.volatile 关键字保证内存可见性;

2.CAS(Compare-And-Swap) 算法 保证数据的原子性;

3.AQS队列   (Unsafe类的park操作是调用Posix的信号量互斥量 condition,mutex那套来实现)

AQS的内部队列采用的是CLH队列锁模型,CLH队列是由一个一个结点(Node)构成的。Node类中有两个常量SHARE和EXCLUSIVE,顾名思义这两个常量用于表示这个结点支持共享模式还是独占模式,共享模式指的是允许多个线程获取同一个锁而且可能获取成功,独占模式指的是一个锁如果被一个线程持有,其他线程必须等待。多个线程读取一个文件可以采用共享模式,而当有一个线程在写文件时不会允许另一个线程写这个文件,这就是独占模式的应用场景。

找的一张AQS队列

JUC的各种功能都是通过实现自定义sync类继承AQS(AbstractQueuedSynchronizer)类,sync有公平锁,非公平锁;也可以区分为独占sync,共享sync。AQS源码一半好懂一半晦涩,比如 do{ node.prev = pred = pred.prev; }while(pred.waitStatus >0); 这一段,我也有过空指针疑问,还有比如,为什么要倒序唤醒等等,所以我附上一份个人觉得比较好的AQS源码解读:

共享锁:https://www.jianshu.com/p/1161d33fc1d0

独占锁:https://www.jianshu.com/p/71449a7d01af

相关文章

  • Java基础(六)-多线程-3

    问: 说说你对JUC的了解JUC是java.util.concurrent的缩写.JUC是Java提供的并发包,其...

  • JUC并发编程

    JUC是什么? JUC,即java.util.concurrent包的缩写,是java原生的并发包和一些常用的工具...

  • [Java]重学Java-原子类

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

  • Java 面试系列:Java 并发包中的高级同步工具 + 面试题

    Java 中的并发包指的是 java.util.concurrent(简称 JUC)包和其子包下的类和接口,它为 ...

  • JUC java并发包

    1. JUC 简介 在 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中...

  • Java并发包基石-AQS详解

    Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如ReentrangLock、...

  • 常用面试题目

    java基础:1.JVM内存模型2.juc并发包线程池,容器,线程安全3.static,final作用域、作用4....

  • ThreadLocal

        ThreadLocal不是JUC并发包下工具,它在java.lang包下面。多线程访问同一个共享变量的时候...

  • AQS概述

    AQS概述 AQS 是JUC并发包中ReentrantLock,ReentrantReadWriteLock,Co...

  • 初探并发包的基石AQS

    JUC提供的并发包中,如CountDownLatch、ReentrantLock、Semaphore、和Reent...

网友评论

    本文标题:JUC java并发包

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