在 Java 并发编程中,线程同步指的是什么?请阐述其概念和主要实现机制。
考察说明
考查对 Java 线程同步概念的准确理解及其在并发编程中的作用。
回答思路
- 【回答框架 1】线程同步是 Java 并发中用于控制多个线程对共享资源访问顺序的机制,核心目的是防止数据竞争和不一致,确保线程安全。
- 【回答框架 2】主要实现机制包括 synchronized 关键字(基于监视器锁,保证原子性和可见性)和 java.util.concurrent 包中的 Lock 接口(如 ReentrantLock,提供更灵活的锁操作)。
- 【回答框架 3】同步的关键是保证临界区代码的原子性,即一段代码在任一时刻只有一个线程执行,同时通过内存屏障保证变量修改对其他线程可见。
- 【回答框架 4】设计同步时应考虑性能影响,过度同步可能导致线程阻塞和上下文切换开销,需权衡粒度与并发度。
- 【关键点 1】线程同步解决的是多线程访问共享资源时的数据竞争问题。
- 【关键点 2】synchronized 和 Lock 是两种常见的同步机制。
- 【关键点 3】同步保证原子性和可见性。
- 【易错点 1】同步并不能保证幂等性,幂等还需唯一标识和状态校验。
- 【易错点 2】锁粒度选择不当会导致性能下降或死锁。
- 【易错点 3】使用 Lock 时需在 finally 中释放锁,避免死锁。