Android中有一些
@GuardedBy("mTemperature")
private SparseLongArray mLastTemperatureSet = new SparseLongArray();
@GuardedBy("mFanSpeed")
private long mLastFanSpeedSet;
@GuardedBy("mAirflow")
private SparseLongArray mLastAirflowSet = new SparseLongArray();
使用了@GuardedBy注解,这是类似于Java关键字synchronized关键字,但使用代替锁。
用法是@GuardedBy(lock),这意味着有保护的字段或方法只能在线程持有锁时被某些线程访问。
可以将锁定指定为以下类型:
- this : 在其类中定义字段的对象的固有锁。
- class-name.this : 对于内部类,可能有必要消除“this”的歧义; class-name.this指定允许您指定“this”引用的意图。
- itself : 仅供参考字段; 字段引用的对象。
- field-name : 锁对象由字段名指定的(实例或静态)字段引用。
- class-name.field-name : 锁对象由class-name.field-name指定的静态字段引用。
- method-name() : 锁对象通过调用命名的nil-ary方法返回。
- class-name :指定类的Class对象用作锁定对象。
本文介绍了Android开发中@GuardedBy注解的应用场景及其使用方法,详细解释了该注解如何帮助开发者实现线程安全,避免并发访问导致的问题,并列举了多种锁的指定方式。
1334

被折叠的 条评论
为什么被折叠?



