相关疑难解决方法(0)

更好的解决方案而不是Java中的嵌套同步块?

我有一个Bank列表的类Account.银行有一种transfer()方法可以将价值从一个帐户转移到另一个帐户.我们的想法是在转移中锁定fromto帐户.

要解决这个问题,我有以下代码(请记住,这是一个非常简单的例子,因为它只是一个例子):

public class Account {
    private int mBalance;

    public Account() {
        mBalance = 0;
    }

    public void withdraw(int value) {
        mBalance -= value;
    }

    public void deposit(int value) {
        mBalance += value;
    }
}

public class Bank {
    private List<Account> mAccounts;
    private int mSlots;

    public Bank(int slots) {
        mAccounts = new ArrayList<Account>(Collections.nCopies(slots, new Account()));
        mSlots = slots;
    }

    public void transfer(int fromId, int toId, int value) {
        synchronized(mAccounts.get(fromId, toId)) …
Run Code Online (Sandbox Code Playgroud)

java concurrency synchronized

9
推荐指数
2
解决办法
3724
查看次数

标签 统计

concurrency ×1

java ×1

synchronized ×1