听过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:一个更加灵活的线程同步器,可以替代CountDownLatchCyclicBarrier

Exchanger

  • Exchanger:允许两个线程在一个同步点交换数据。

Locks

  • ReentrantLock:一个可重入的互斥锁,具有与synchronized相同的基本行为和语义,但更加灵活。

  • ReadWriteLock:读写锁,允许多个线程同时读取,但只有一个线程可以写入。

  • StampedLock:提供了一种乐观的读策略的锁,这种锁通常用于读多写少的场景。

并发集合

ConcurrentHashMap

  • ConcurrentHashMap:一个线程安全的HashMap实现。

ConcurrentLinkedQueue

  • ConcurrentLinkedQueue:一个基于链接节点的无界线程安全队列。

ConcurrentSkipListMap

  • ConcurrentSkipListMap:一个线程安全的可排序的映射表。

CopyOnWriteArrayList

  • CopyOnWriteArrayList:一个线程安全的List实现,在写入时复制所有内容。

CopyOnWriteArraySet

  • CopyOnWriteArraySet:一个线程安全的Set实现,基于CopyOnWriteArrayList

原子变量

  • AtomicIntegerAtomicLongAtomicBoolean 等:提供了一种无锁的线程安全编程方式,用于实现原子计数器或序列生成器。

  • AtomicReference:提供了一个可以原子更新的对象引用。

  • AtomicStampedReference:原子更新带有版本号的引用类型,可以解决ABA问题。

并发工具类

  • Collections.synchronizedXXX:将非线程安全的集合包装成线程安全的集合。

  • Arrays.asList:将数组转换为列表。

JUC是Java并发编程的核心,它提供了一系列高效、可扩展且线程安全的工具,极大地简化了并发程序的开发。

最后更新于