|
以下のようにsynchronizedを使ったのですが、balanceの結果が2000になりません。 やり方がおかしいのでしょうか?教えて頂きたく。 (t2.start()の箇所でデバッグで止めて、わざと時間を置くと2000になります。)
public class Account extends Thread {
volatile private static int balance = 0;
public void run() { deposit(1000); } synchronized public void deposit(int money){ int total = balance + money;
balance = total; } public static void main(String[] args) {
Account t1 = new Account();
Account t2 = new Account();
t1.start();
t2.start(); System.out.print(balance); } }
|