在并发编程中,若需要对一个共享的整数变量进行高效的原子递增操作,且要求避免使用重量级锁,以下哪种方案最合理?
答案解析
核心考点:并发原子操作的实现原理及锁粒度控制
解题思路分析:
1. synchronized和ReentrantLock都属于悲观锁机制,虽能保证原子性但会引入线程阻塞,违背'避免重量级锁'要求
2. volatile仅保证可见性,无法解决自增操作的原子性问题(自增包含读取-计算-写入三步)
3. AtomicInteger通过CAS(Compare-And-Swap)实现无锁化原子操作,底层硬件指令保证原子性
选项分析:
A:同步块带来上下文切换开销,属于重量级方案
B:volatile不保证复合操作的原子性,多线程下仍会丢失更新
C:正确方案,CAS通过循环尝试实现无锁原子操作
D:显式锁仍存在获取/释放开销,非最优解
易错点提醒:容易混淆volatile的可见性与原子性特性
正确答案:C