请列举并说明你使用过的 Java 并发工具类,包括它们的主要用途和适用场景。
考察说明
考察候选人对 Java 并发工具类的熟悉程度和实际应用能力。
回答思路
- 【回答框架 1】Java 并发工具类主要位于 java.util.concurrent 包,包括线程池、并发集合、同步工具和原子类。
- 【回答框架 2】线程池如 ThreadPoolExecutor 和 Executors 提供线程复用和任务调度,适用于异步任务和并发处理。
- 【回答框架 3】并发集合如 ConcurrentHashMap 和 CopyOnWriteArrayList 提供线程安全的集合操作,适用于高并发读写。
- 【回答框架 4】同步工具如 CountDownLatch、CyclicBarrier 和 Semaphore 控制线程协作和资源访问,适用于多线程协调。
- 【回答框架 5】原子类如 AtomicInteger 提供无锁的线程安全变量操作,适用于计数器等场景。
- 【关键点 1】使用过 ThreadPoolExecutor 管理线程池,设置核心线程数和队列容量。
- 【关键点 2】使用 ConcurrentHashMap 替代 HashTable 提高并发性能。
- 【关键点 3】使用 CountDownLatch 等待多个线程完成初始化。
- 【关键点 4】使用 Semaphore 控制并发访问数据库连接的线程数。
- 【关键点 5】使用 AtomicInteger 实现线程安全的计数器。
- 【易错点 1】Executors 创建的固定线程池可能导致任务队列无限增长,应使用有界队列。
- 【易错点 2】并发集合在迭代时某些操作可能抛出 ConcurrentModificationException。
- 【易错点 3】同步工具使用不当可能造成死锁或资源耗尽,需注意释放条件和超时设置。