锁
Lock<br>显式锁定义顶层接口<br>
ReentrantLock<br>可重入锁<br>
ReadWriteLock<br>读写锁接口<br>
ReentrantReadWriteLock<br>可重入读写锁<br>
StampedLock<br>解决读写锁的写饥饿问题,支持写锁、悲观读锁和乐观读,乐观读是无所得允许一个线程获取写锁<br>
Condition<br>通过 Lock.newCondition 获取,完成等待与唤醒<br>
LockSupport<br>线程阻塞工具类<br>
AbstractOwnableSynchronizer<br>设置和获取独占锁的拥有者线程,供子类使用<br>
AbstractQueuedSynchronizer<br>大名鼎鼎的 AQS,自定义同步器框架,ReentrantLock、ReentrantReadWriteLock 等都是基于此实现<br>
AbstractQueuedLongSynchronizer<br>AOS 的子类,state 为 long,支持 64 位,其他与 AQS 无区别<br>
异常<br>
TimeoutException<br>阻塞操作超时异常<br>
CompletionException<br>完成结果或任务过程引发的异常<br>
BrokenBarrierException<br>线程试图等待处于中断状态的屏障 或 线程等待时进入中断状态,抛出的异常<br>
CancellationException<br>获取值的任务被 cancel 异常<br>
ExecutionException<br>获取任务结果,引发的异常,会造成任务中止<br>
原子类
AtomicBoolean<br>可原子更新的 Boolean<br>
AtomicInteger<br>可原子更新的 Integer
AtomicIntegerArray<br>可原子更新元素的 int 数组
AtomicIntegerFieldUpdater<br>基于反射可原子更新类中的 Integer 成员属性
AtomicLong<br>可原子更新的 Long
AtomicLongArray<br>可原子更新元素的 long 数组
AtomicLongFieldUpdater<br>基于反射可原子更新类中的 Long 成员属性
AtomicMarkableReference<br>带 boolean 标记可原子更新对象,多了 boolean 类型的 mark,可解决 ABA 问题
AtomicReference<br>可原子更新对象
AtomicReferenceArray<br>可原子更新对象数组元素
AtomicReferenceFieldUpdater<br>基于反射可原子更新类中的成员属性对象
AtomicStampedReference<br>带有版本戳可原子更新对象,基于 int 版本戳,可以解决 ABA 问题
DoubleAccumulator<br>DoubleAdder 的增强版,支持定义计算函数
DoubleAdder<br>Double 累加器,中途 sum 可能存在误差,保证结果最终一致,高并发下用 cell 数组把线程分组计算更新
LongAccumulator<br>LongAdder 的增强版,支持定义计算函数<br>
LongAdder<br>Long 累加器,中途 sum 可能存在误差,保证结果最终一致,高并发下用 cell 数组把线程分组计算更新,高并发下性能比 AtomicLong 好,但空间复杂度高<br>
Striped64<br>LongAdder、LongAccumulator、DoubleAdder、DoubleAccumulator 通过 cell 数组把线程分组计算更新的底层实现<br>
线程池<br>
Executor<br>线程池顶层接口,提交可运行任务<br>
ExecutorService<br>提供停止线程池、提交带结果的任务等方法的线程池接口<br>
AbstractExecutorService<br>ExecutorService 的默认实现<br>
ForkJoinPool<br>支持任务窃取与拆分的线程池<br>
ThreadPoolExecutor<br>线程池的实现类,可通过构造方法与不同参数创建自己想要的线程池<br>
ScheduledExecutorService<br>可延迟或周期执行任务的线程池接口<br>
ScheduledThreadPoolExecutor<br>可延迟或周期执行任务的线程池,也是 ThreadPoolExecutor 的子类<br>
Executors<br>各种线程池的创建、任务类型的转换等功能的工具类<br>
Callable<br>带返回结果的任务的接口<br>
Future<br>表示异步计算结果的接口,检查计算是否完成,等待计算完成,等待获取结果<br>
ForkJoinTask<br>ForkJoinPool 的任务,比线程更轻量<br>
CountedCompleter<br>在触发完成动作时,检查有没有挂起动作,若没有则执行一个完成动作<br>
RecursiveAction<br>在 ForkJoinPool 任务拆分递归中,无结果的 ForkJoinTask,始终返回 null<br>
RecursiveTask<br>在 ForkJoinPool 任务拆分递归中,有结果的 ForkJoinTask<br>
RunnableFuture<br>Runnable、Future 的子接口<br>
FutureTask<br>一种可取消的异步计算任务,同时支持阻塞获取任务结果<br>
ScheduledFuture<br>可延迟、取消的 Future 的接口<br>
RunnableScheduledFuture<br>RunnableFuture、ScheduledFuture 的子接口<br>
CompletionService<br>异步任务执行完成有序化接口<br>
ExecutorCompletionService<br>CompletionService 的实现,线程池 Executor 和阻塞队列 BlockingQueue 的功能融合,让异步任务有序化,先执行完成的先进入阻塞队列<br>
CompletionStage<br>接口定义了线程完成阶段可以采用的不同执行方式,如异步,合并等<br>
CompletableFuture<br>计算完成,可设置值与状态、支持触发依赖函数和依赖操作,也是 Future 的子类<br>
RejectedExecutionHandler<br>线程池拒绝策略接口<br>
AbortPolicy<br>拒绝任务,抛出异常策略<br>
子主题
CallerRunsPolicy<br>提交任务的线程直接运行拒绝的任务的策略<br>
DiscardOldestPolicy<br>丢弃最早的任务,提交新任务策略<br>
DiscardPolicy<br>直接丢掉被拒绝的任务<br>
ThreadFactory<br>线程工厂接口,用于线程池创建线程<br>
ForkJoinWorkerThread<br>被 ForkJoinPool 管理,执行 ForkJoinTask 任务的线程<br>
TimeUnit <br>时间单位枚举<br>
delay<br>标记 delay 的接口<br>
工具
Semaphore<br>信号量,与锁最大的不同在于,允许多个线程访问一个临界区<br>
CyclicBarrier<br>循环栅栏,可循环利用的屏障,允许一组线程全部等待对方到达一个公共屏障点再一起执行<br>
CountDownLatch<br>一个或多个线程等待其他线程的操作完成<br>
Exchanger<br>两个工作线程在交换点交换数据的工具类<br>
ThreadLocalRandom<br>本地线程的生成随机数工具类<br>
Phaser<br>可重用的同步屏障,比 CyclicBarrier、CountDownLatch 灵活<br>