Lombok 之 Synchronized_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Lombok 之 Synchronized

Lombok 之 Synchronized

 2014/10/3 15:15:56  朱秋旭  程序员俱乐部  我要评论(0)
  • 摘要:@Sychronized是一个处理线程安全问题的annotation,他的使用方法和关键字synchronized比较类似,但是有一些不同点就是,关键字synchronized是锁定当前对象(this指针),而@Synchronized则会锁定一个private的常量。如果当前类中没有这个常量,就会自动生成一个。importlombok.Synchronized;publicclassSynchronizedExample
  • 标签:Ron

@Sychronized 是一个处理线程安全问题的annotation, 他的使用方法关键字 synchronized比较类似,但是有一些不同点就是,关键字synchronized是锁定当前对象(this指针) , 而@Synchronized则会锁定一个private的常量。如果当前类中没有这个常量,就会自动生成一个。

class="java">import lombok.Synchronized;

public class SynchronizedExample {
  private final Object readLock = new Object();
  
  @Synchronized
  public static void hello() {
    System.out.println("world");
  }
  
  @Synchronized
  public int answerToLife() {
    return 42;
  }
  
  @Synchronized("readLock")
  public void foo() {
    System.out.println("bar");
  }
}

?

如果当前锁定的方法是一个静态的方法的话,会自动生成一个静态常量,如果是一个普通方法的话会生成一个普通常量,类型为Object

?

public class SynchronizedExample {
  private static final Object $LOCK = new Object[0];
  private final Object $lock = new Object[0];
  private final Object readLock = new Object();
  
  public static void hello() {
    synchronized($LOCK) {
      System.out.println("world");
    }
  }
  
  public int answerToLife() {
    synchronized($lock) {
      return 42;
    }
  }
  
  public void foo() {
    synchronized(readLock) {
      System.out.println("bar");
    }
  }
}

?

发表评论
用户名: 匿名