今日のインタビューでその質問を受けました。
class BankAccount {
    private int money;
    public synchronized void deposite(int sum) {
        money += sum;
    }
    public synchronized void withdraw(int sum) {
        money -= sum;
    }
    public synchronized int getMoney() {
        return money;
    }
}
class accountManager {
    public void transfer(BankAccount a, BankAccount b, int money) {      
    }
}
だから私は transfer() メソッドを書く必要があるので、それはスレッドセーフになり、アカウントの残高は >= 0 になるはずです.
public void transfer(BankAccount a, BankAccount b, int money) {
    synchronized ( a ) {
        synchronized ( b ) {
            int temp = a.getMoney() - money;
            if (temp >= 0) {
                a.withdraw(temp);
                b.add(temp);
            }
        }
    }
}
と書きましたが、aからbへ、bからaへ同時に転送するとデッドロックが発生します。2 番目の質問は、デッドロックを修正する方法です。