小编Aza*_*aro的帖子

银行转账同步

我在今天的采访中得到了这个问题。

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) {      
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我需要编写transfer()方法,所以它将是线程安全的并且帐户余额应该> = 0。

public void transfer(BankAccount a, BankAccount b, int money) {
    synchronized ( a ) {
        synchronized ( b ) {
            int temp = a.getMoney() - money;
            if (temp …
Run Code Online (Sandbox Code Playgroud)

java concurrency deadlock

1
推荐指数
1
解决办法
1706
查看次数

标签 统计

concurrency ×1

deadlock ×1

java ×1