JUC基础介绍

发布于 2020-04-30  406 次阅读


JUC是并发编程引发出来的问题,打破了传统的Thread+Runable+synchronized的并发编程模式,简单理解JUC其实就是java.util.concurrentcurrent的一个工具类,这个类主要由三部分组成,concurrent.atomic+concurrent.locks+concurrent

concurrent类主要存放线程安全的集合类和工具类(如callable)

concurrent结构组成

concurrent.locks类存放各种锁(Lock,readwritelock),监视器(condition(线程的状压态转换wait,sigsal)),线程同步队列(abstractQueuedSynchronize(AQS)....)

LOCK

concurrent.atomic是线程的原子类(保证数据的原子性,底层由CAS+Valatile实现)

atomic

concurrent.locks的内部组成

Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。 它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition 。 锁是用于通过多个线程控制对共享资源的访问的工具。 通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁。 但是,一些锁可能允许并发访问共享资源,如ReadWriteLock的读锁。因而lock比传统的synchronized 在生产环境更有优势
locks类的组成:condition(监视器)负责线程的状态转换如wait,notify
Lock锁的主要存放地有ReentrantLock(可重入 JUC基础介绍 锁),ReentrantReadWriteLock(可重入读写锁)
ReadwriteLock读写锁
AQS(abstractQueuedSynchronized)线程同步队列(这是实现Lock的基础如公平锁与非公平锁)


路漫漫其修远兮,吾将上下而求索