一个简单的例子:
据我理解,获取与对象相关联的锁并不会阻止其他线程访问该对象。它们必须是相同的锁才能防止访问。
所以如果两个人在不同的自动取款机上尝试访问同一账户,那么就会创建这个
假设A人(线程A)试图将钱存入账户,同时B人(线程B)试图获得账户的总余额,那么它是如何工作的呢?它们是否在使用时缓存
class Account{
private String account_name;
private String password;
private double balance;
public synchronized double getBalance(){
return balance;
}
public synchronized void setBalance(double add){
balance += add;
}
}
据我理解,获取与对象相关联的锁并不会阻止其他线程访问该对象。它们必须是相同的锁才能防止访问。
所以如果两个人在不同的自动取款机上尝试访问同一账户,那么就会创建这个
Account
对象的两个不同实例,是吗?这样它就没有被同一个锁保护了,对吗?假设A人(线程A)试图将钱存入账户,同时B人(线程B)试图获得账户的总余额,那么它是如何工作的呢?它们是否在使用时缓存
Account
,使得下一个请求进来时会返回同一个Account
对象?