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;
            }
        } 

你可能感兴趣的:(复试上机,多线程,java)