使用している間、同期のは、私は非常に単純な<code>Bank Account</code>クラスを実装したいと仮定しましょう、と我々は同時実行とマルチスレッドの問題について世話をしたいのAtomicInteger
はそれを次の方法を作成することをお勧めしていてもbalance
はAtomicInteger
ですか?
一方、すべてのメソッドを同期させると、もうAtomicInteger
の使用はありません。そうですか?
import java.util.concurrent.atomic.AtomicInteger;
public class Account {
AtomicInteger balance;
public synchronized int checkBalance(){
return this.balance.intValue();
}
public synchronized void deposit(int amount){
balance.getAndAdd(amount);
}
public synchronized boolean enoughFund(int a){
if (balance.intValue() >= a)
return true;
return false;
}
public synchronized boolean transfer_funds(Account acc, int amount){ // dest : acc
if (enoughFund(amount)){
withdraw(amount);
acc.deposit(amount);
return true;
}
return false;
}
public synchronized boolean withdraw(int amount){
if (checkBalance() < amount)
return false;
balance.getAndAdd(-1 * amount);
return true;
}
}
したがって、AtomicIntegerを使用する必要はありませんか? – mr5