java的guardedBy注解


what:

  常见类型:

  1、@GuardedBy( "this" ) 受 对象内部锁保护
  2、@GuardedBy( "fieldName" ) 受 与fieldName引用相关联的锁 保护。
  3、@GuardedBy( "ClassName.fieldName" ) 受 一个类的静态field的锁 保存。
  4、@GuardedBy( "methodName()" ) 锁对象methodName() 方法的返值,受这个锁保护。
  5、@GuardedBy( "ClassName.class" ) 受 ClassName类的直接锁对象保护。而不是这个类的某个实例的锁对象。

How:

  @GuardedBy( "this" ) :  

    bitmapPreFiller需要在synchronized 锁类对象级别的代码块中,如下:

    synchronized锁成员方法,属于synchronized 锁类对象级别 

  GuardedBy( "fieldName" ) :

     使用managers对象时,需要将managers在synchronized锁managers对象的代码块中,如:

     当有人获得了凭据的同步锁定时,可以访问金额,因此,BankAccount中的金额由凭据保护。