pet*_*ter 4 java concurrency multithreading
一个简单的例子:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,获取与对象关联的锁并不会阻止其他线程访问该对象。它们必须是相同的锁以防止访问。
因此,如果两个人尝试在不同的 ATM 上访问同一个帐户,那么它将创建此Account对象的两个不同实例,对吗?那么它不是用相同的锁保护的,对吗?
假设人 A(线程 A)试图将钱存入账户,而同时人 B(线程 B)试图获得账户的总余额。
它是如何工作的 ?他们是否缓存Account正在使用的时间,以便Account在下一个请求到来时返回相同的对象?
同步方法将锁定对象实例。但是,如果有一个方法,它不是同步的并发访问就可能发生。
ATM 机不会访问您的帐户 - 银行服务器会。ATM 机只是一个客户端。因此,从 2 个不同的 ATM 访问同一个帐户将受到银行服务器的保护,它的内存/数据库中只有该帐户的一个实例(可能受到某种锁定机制的保护,而不是用 Java 编写的)。
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |