jmu-Java-07多線程-同步訪問 (10分)

jmu-Java-07多線程-同步訪問 (10分)

現已有Account類,擁有
屬性:
private int balance
方法:
相應的getter方法。

要求爲該類編寫:
void deposit(int money) //存錢,在餘額的基礎上加上money
void withdraw(int money) //取錢,在餘額的基礎上減去money

注意:

  1. 取錢時如果balance<0的時候,會拋出異常。在多線程情況下,如只有一個存錢的線程,但是有多個取錢的線程,很可能會拋出異常。
  2. 需要編寫完整的deposit方法與withdraw的前半部分代碼解決該問題。

裁判測試程序:

import java.util.Scanner;

//這裏是已有的Account類前半部分的代碼
/*這裏是deposit代碼*/
/*這裏是withdraw代碼的前半部分*/
    if(balance<0) //這裏是withdraw代碼的後半部分。
        throw new IllegalStateException(balance+"");	
    }

/*系統已有代碼,無需關注*/

public  void deposit(int money) {    
        synchronized(this) {
            this.balance+=money;
        }
            
    }
    public  void withdraw(int money) {    
        synchronized(this) {
            if(this.balance>=money) {
                this.balance -= money;
            }
        } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章