我想了解同步對象的概念。使用Java Cert Book中的這個示例,您是否可以幫助我理解以下兩段代碼之間的行爲差異(其中一個是我們在要保護的方法/操作與競爭條件同步的對象與另一個我們使用的對象之間進行同步輔助對象作爲鎖來實現相同的目標):瞭解Java中的同步塊
1.
class Client {
BankAccount account;
public void updateTransaction() {
synchronized (account) {
account.update(); // update is safe because of lock on account obj
}
}
public double withdrawFunds() {
double amt;
synchronized (account) {
account.calculateInterest();
amt= account.withdraw();
}
return amt;
}
}
2.
class Client {
BankAccount account;
Object lock = new Object();
public void updateTransaction() {
synchronized (lock) {
account.update(); // update is safe because of a lock
}
}
public double withdrawFunds() {
double amt;
synchronized (lock) {
account.calculateInterest();
amt= account.withdraw();
}
return amt;
}
}
問題的目的是瞭解鎖定/同步如何工作。 – JavaUser201
希望你也能更好地理解最佳實踐。 ;) –