Theo em hiểu thì từ khóa synchronized là để trong cùng 1 thời điểm, chỉ có 1 thread được tác động tới dữ liệu được synchronized.
Vậy tại sao demo lại như này ạ
public class CustomerBankAccount {
private int balance = 0;
public synchronized void deposit(amount) { // gửi tiền
ballance += amount;
}
public synchronized void withdraw(amount) { // rút tiền hoặc chuyển khoản
if (ballance > amount)
ballance -= amount;
}
public synchronized int getBalance() {
return ballance;
}
}
nếu đúng như định nghĩa thì cái cần được synchronized phải là balance chứ ạ? Chứ có phải là 2 method nạp tiền và rút tiền đâu (Vì ở demo người ta cho 1 thread chạy rút tiền, 1 thread chạy nạp tiền nên em nghĩ là có bao giờ cùng 1 lúc chạy cùng rút tiền hoặc cùng nạp tiền đâu?) nên cái synchronized theo định nghĩa phải là balance chứ nhỉ?
Em cám ơn
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?