听过 JUC 把,那除了 ConcurrentHashMap 还了解啥?
听过 JUC 把,那除了 ConcurrentHashMap 还了解啥?
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
JUC (Java Util Concurrent) 概览
JUC,即 Java 并发包(java.util.concurrent
),是 Java 提供的一套并发工具类,它包含了许多在并发编程中非常有用的数据结构和算法。ConcurrentHashMap
只是其中的一部分。以下是 JUC 的一些重要组件:
线程池框架
Executor 框架
- Executor 接口 :简化了线程的使用,提供了一种将任务提交与任务如何运行(在哪个线程上运行)分离的机制。
- Executors 工具类 :提供了创建不同类型线程池的工厂方法。
- ThreadPoolExecutor 类 :线程池的实现,可以自定义线程池的各种参数。
- ScheduledThreadPoolExecutor 类 :一个可以执行延迟或定期任务的线程池。
同步器
CountDownLatch
- CountDownLatch:允许一个或多个线程等待其他线程完成操作。
CyclicBarrier
- CyclicBarrier:允许一组线程互相等待,达到一个公共的障碍点(Barrier)再继续执行。
Semaphore
- Semaphore:一个计数信号量,用于限制可以访问某些资源的线程数量。
Phaser
- Phaser:一个更加灵活的线程同步器,可以替代
CountDownLatch
和CyclicBarrier
。
Exchanger
- Exchanger:允许两个线程在一个同步点交换数据。
Locks
- ReentrantLock:一个可重入的互斥锁,具有与
synchronized
相同的基本行为和语义,但更加灵活。 - ReadWriteLock:读写锁,允许多个线程同时读取,但只有一个线程可以写入。
- StampedLock:提供了一种乐观的读策略的锁,这种锁通常用于读多写少的场景。
并发集合
ConcurrentHashMap
- ConcurrentHashMap:一个线程安全的 HashMap 实现。
ConcurrentLinkedQueue
- ConcurrentLinkedQueue:一个基于链接节点的无界线程安全队列。
ConcurrentSkipListMap
- ConcurrentSkipListMap:一个线程安全的可排序的映射表。
CopyOnWriteArrayList
- CopyOnWriteArrayList:一个线程安全的 List 实现,在写入时复制所有内容。
CopyOnWriteArraySet
- CopyOnWriteArraySet:一个线程安全的 Set 实现,基于
CopyOnWriteArrayList
。
原子变量
- AtomicInteger、AtomicLong、AtomicBoolean 等:提供了一种无锁的线程安全编程方式,用于实现原子计数器或序列生成器。
- AtomicReference:提供了一个可以原子更新的对象引用。
- AtomicStampedReference:原子更新带有版本号的引用类型,可以解决 ABA 问题。
并发工具类
- Collections.synchronizedXXX:将非线程安全的集合包装成线程安全的集合。
- Arrays.asList:将数组转换为列表。
JUC 是 Java 并发编程的核心,它提供了一系列高效、可扩展且线程安全的工具,极大地简化了并发程序的开发。