class BankAccount {
private double balance;
private Lock lock;
public BankAccount() {
balance = 0;
lock = new ReentrantLock();
}
@GuardedBy("lock")
public void deposit(double amount) {
lock.lock();
try {
balance += amount;
} finally {
lock.unlock();
}
}
@GuardedBy("lock")
public void withdraw(double amount) {
lock.lock();
try {
balance -= amount;
} finally {
lock.unlock();
}
}
@GuardedBy("lock")
public double getBalance() {
return balance;
}
}