在 Java 中,为了保证线程安全性,我们需要对某些共享资源或者需要同步的代码区域进行加锁。如果一个共享资源需要加锁,我们通常会在代码中使用 synchronized 关键字来实现,但是并不是所有的成员变量都需要在锁定中。所以,如果某个成员变量需要在锁定中,则我们需要使用 @GuardedBy("lock") 注解来标注它。
例如,以下是一个使用 @GuardedBy 注解的示例代码:
public class MyCounter {
private int count;
private final Object lock = new Object();
@GuardedBy("lock")
public void increment() {
synchronized (lock) {
count++;
}
}
@GuardedBy("lock")
public void decrement() {
synchronized (lock) {
count--;
}
}
}
在这个示例中,我们用 @GuardedBy 注解标注了 increment() 和 decrement() 方法中需要在 lock 对象锁定中执行的代码块。这样,在使用这些方法时,其他线程就无法使用 lock 对象进行访问,能够确保数据的线程安全性。