Bootstrap

二、多线程(4)JUC并发包

 

学习是一个循序渐进的过程, 就像一部手机, 我们开始接触他的时候只是学怎么用, 慢慢的用多了, 就会如何做一些设置 , 清理垃圾让他运行的更流畅了, 等手机屏幕碎了, 电池坏了, 自己也学会换配件了, 再后来通过看一些手机新机测试机构的视频, 都了解了手机的内部构造了. 学习一个东西也是如此, 时间越长认识越全面越深入, 目前尽量做一个目录和简介, 希望以后再回过头来丰富完善这些知识.

一、tools

主要包含了 CountDownLatch , CyclicBarrier , Semaphore , Executors , Exchanger 等

1. CountDownLatch : 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

2. CyclicBarrier :  循环屏障它允许一组线程相互等待直到所有线程都到达一个公共的屏障点。

3. Semaphore :(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,保证合理的使用公共资源。

4. Executors  : 用于创建线程池的工具类, 它为Executor,ExecutorService,ScheduledExecutorService,ThreadFactory和                                 Callable类提供了一些工具方法。

5. Exchanger : 并发工具类,用于线程间的数据交换

二、locks

主要包含了ReentrantLock , ReentrantReadWriteLock , Condition , LockSupport 等

1. ReentrantLock 即我们常用的可重入锁

2. ReentrantReadWriteLock  读写锁

3. Condition : 作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。不同的是,Object中的wait(),notify(),notifyAll()方法是和"同步锁"(synchronized关键字)捆绑使用的;而Condition是需要与"互斥锁"/"共享锁"捆绑使用的。

4. LockSupport : 是JUC包中的一个工具类,是用来创建锁和其他同步类的基本线程阻塞原语。

三、atomic

主要包含了无锁情况下一些支持原子操作的类

基本类: AtomicInteger、AtomicLong、AtomicBoolean;

引用类型: AtomicReference、AtomicReference的ABA实例、AtomicStampedRerence、AtomicMarkableReference;

数据类型: AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray

属性原子修改器: AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdater

四、collections

主要包含了 多线程环境下的阻塞/非阻塞队列, CopyOnWrite机制实现的并发容器, 以及concurrentMap

五、executor

主要包含了 Future, Callable, Executor, CompletionService, RejectedExecutionhandler, TimeUnit

 

;