
上篇设计模式聊完,这篇进入Java并发专项。第28篇P7高级讲过AQS基础和线程池参数,这篇往深处走——并发工具类原理、ConcurrentHashMap底层、线程池实战调优。P7并发面试两个层次:背概念(CountDownLatch干什么用的)和讲原理(CountDownLatch内部基于AQS共享模式,state是计数值)。P7 offer要第二层。今天8道题覆盖P7并发深层考点,每道给出原理级答案。Q1:CountDownLatch原理?怎么用?作用:让一个或多个线程等待一组事件完成。典型场景:主线程等待N个子任务执行完再汇总结果。原理:基于AQS共享模式。state初始值为count,每个countDown()调releaseShared把state减1(CAS操作),减到0时AQS释放所有等待线程。await()调acquireSharedInterruptibly,state0就park阻塞,state=0时unpark。用法:new CountDownLatch(3),子任务完成后countDown(),主线程await()等待。等3个countDown都执行完主线程继续。追问:CountDownLatch能重复使用吗?不能。count到0后废了,再await直接返回。需要重复等待用CyclicBarrie