JUC是并发编程引发出来的问题,打破了传统的Thread+Runable+synchronized的并发编程模式,简单理解JUC其实就是java.util.concurrentcurrent的一个工具类,这个类主要由三部分组成,concurrent.atomic+concurrent.locks+concurrent
concurrent类主要存放线程安全的集合类和工具类(如callable)
concurrent.locks类存放各种锁(Lock,readwritelock),监视器(condition(线程的状压态转换wait,sigsal)),线程同步队列(abstractQueuedSynchronize(AQS)....)
concurrent.atomic是线程的原子类(保证数据的原子性,底层由CAS+Valatile实现)
concurrent.locks的内部组成
Lock
实现提供比使用synchronized
方法和语句可以获得的更广泛的锁定操作。 它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition
。 锁是用于通过多个线程控制对共享资源的访问的工具。 通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁。 但是,一些锁可能允许并发访问共享资源,如ReadWriteLock
的读锁。因而lock比传统的synchronized 在生产环境更有优势
locks类的组成:condition(监视器)负责线程的状态转换如wait,notify
Lock锁的主要存放地有ReentrantLock(可重入 锁),ReentrantReadWriteLock(可重入读写锁)
ReadwriteLock读写锁
AQS(abstractQueuedSynchronized)线程同步队列(这是实现Lock的基础如公平锁与非公平锁)
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109