常用的 JUC 类

83 阅读2分钟

Java Util Concurrent(JUC)提供了一组丰富而强大的类,用于更高级别和更灵活地处理并发操作。以下是一些常用的 JUC 类的概述:

  1. ConcurrentHashMap:

    • ConcurrentHashMap 是一个高效的线程安全的哈希表实现,用于替代传统的HashTable和Collections.synchronizedMap。它采用了分段锁机制(在 JDK 8 以前)和 CAS 操作(JDK 8 及以后),提高了并发性能。
  2. CopyOnWriteArrayList:

    • CopyOnWriteArrayList 是一个线程安全的动态数组实现。它通过在写入时创建数组的副本,来避免在读取时进行加锁,从而提高了读取的性能。适用于读多写少的场景。
  3. CopyOnWriteArraySet:

    • CopyOnWriteArraySet 是基于 CopyOnWriteArrayList 的实现,用于存储不重复的元素。同样具有读多写少的优势。
  4. Semaphore(信号量):

    • Semaphore 是一个计数信号量,用于控制同时访问的线程个数。通过维护一系列的许可证,可以实现资源访问的限制,例如实现连接池的控制。
  5. ReentrantLock(可重入锁):

    • ReentrantLock 是显示锁的实现,提供了与 synchronized 相同的并发性和内存语义,同时提供更高的灵活性。支持公平锁和非公平锁,以及一些高级功能,如中断响应、定时锁等。
  6. BlockingQueue(阻塞队列):

    • BlockingQueue 是一个线程安全的队列,支持在队列的两端进行插入和移除操作。常用于生产者-消费者模型,提供了一种简单而有效的协作方式。
  7. CountDownLatch(倒计时门栓):

    • CountDownLatch 用于让一个线程等待其他线程各自执行完毕后再执行。通过设置初始计数值,每个线程执行完毕后调用 countDown(),主线程通过 await() 等待计数值减为零。
  8. CyclicBarrier(循环屏障):

    • CyclicBarrier 用于同步一组线程,让它们在到达某个屏障点时互相等待,然后同时继续执行