【线程同步】关于静态扫描时出现的静态字段访问线程同步实际问题小结
文章目录
- 问题背景
- 问题原因进一步分析:
- 解决方案 1:使用私有静态锁
- 解决方案 2:使用类锁
- 扩展1: 什么是实例锁和静态锁?
- 实例锁(对象锁)
- 静态锁(类锁)
- 总结
- 扩展2: synchronized 的三种使用方式
问题背景
静态文件扫描代码库时的错误提示:
CID 1084274:并发数据访问冲突 (NON_STATIC_GUARDING_STATIC)
0.non_static_guarding_static:在非静态 “ZoneStateManager.this” 上带有锁保护时访问静态字段 “com.android.car.audio.ZoneStateManager.mMirrorUid” 可能无法确保线程安全。
Occurrence Count: 3
Type: 数据竞态条件
相关代码:
class ZoneStateManager { private boolean mIsMirrorState = false;