JUC提问
Time: 2025-03-24 Monday 17:00:00
Java并发编程(JUC)核心问题集
线程控制与协作
1. 线程交替执行
- 问题:如何控制线程按特定顺序交替执行?
- 关键词:信号量(Semaphore)、线程协作
2. 线程等待与唤醒
- 问题:什么是虚假唤醒(spurious wakeup)?为什么会发生?
- 关键词:单队列、wait/notify
3. Condition机制
- 问题:Condition是什么?与传统wait/notify相比有什么优势?
- 关键词:多队列、精确唤醒
4. LockSupport工具
- 问题:LockSupport的作用是什么?
- 关键词:线程阻塞/唤醒、许可证(permit)机制
锁机制与同步
5. Synchronized关键字
- 问题:Synchronized锁的到底是什么?
- 关键词:对象锁、类锁、Monitor
6. 读写锁
- 问题:读写锁如何导致死锁?如何避免?
- 关键词:ReentrantReadWriteLock、锁升级
持有读锁不可以再持有写锁,持有写锁可以继续持有读锁
7. StampedLock
- 问题:StampedLock的乐观读是什么?有什么优势?
- 关键词:乐观锁、悲观锁、版本号
并发容器与工具类
8. 线程安全容器
- 问题:如何解决ArrayList的线程安全问题?
- 关键词:CopyOnWriteArrayList、Collections.synchronizedList
9. CountDownLatch
- 问题:CountDownLatch的作用是什么?适用场景?
- 关键词:线程等待、计数器
10. Semaphore
- 问题:Semaphore的作用是什么?与其他同步工具的区别?
- 关键词:信号量、资源控制
线程通信与数据共享
11. Callable接口
- 问题:Callable接口是什么?与Runnable有何不同?
- 关键词:Future、返回值、异常处理
12. ThreadLocal
- 问题:ThreadLocal为什么会导致内存泄漏?如何避免?
- 关键词:线程本地变量、弱引用、Entry
并发底层机制
13. volatile关键字
- 问题:volatile的作用机制是什么?
- 关键词:可见性、有序性、一写多读
14. CAS操作
- 问题:什么是CAS?存在哪些问题?
- 关键词:Compare-And-Swap、ABA问题、乐观锁
15. 原子类
- 问题:Java中的原子类有哪些?LongAdder为什么比AtomicLong更高效?
- 关键词:Atomic系列、LongAdder、分段累加
什么是进程什么是线程?
线程共享进程的 代码段 (Code Segment), 数据段 (Data Segment), 和 堆 (Heap)。以及网络资源,文件句柄,io权限 但不共享栈 (Stack)。
JUC提问
http://example.com/2025/03/20/JUC提问/