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