簡単な例:
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;
}
}
オブジェクトに関連付けられたロックを取得しても、他のスレッドがそのオブジェクトにアクセスするのを妨げることはないという私の理解から。アクセスを防ぐには、同じロックである必要があります。
したがって、2人が異なるATMで同じアカウントにアクセスしようとすると、このAccount
オブジェクトの2つの異なるインスタンスが作成されます。それで、それは同じロックで守られていませんよね?
人物A(スレッドA)が口座にお金を貯めようとしたと同時に、人物B(スレッドB)が口座の合計残高を取得しようとした場合を考えてみましょう。
それはどのように機能しますか?次のリクエストが届いたときにAccount
同じオブジェクトを返すように、使用中にキャッシュしますか?Account