例九.txt

来自「这是一本java基础教程 对新手上路有很大帮助」· 文本 代码 · 共 45 行

TXT
45
字号
public class Example8_9{
    public static void main(String args[ ]){
        String accountantName="会计",cashierName="出纳";
        Bank bank=new Bank(accountantName,cashierName);
        Thread accountant,cashier;
        accountant=new Thread(bank);
        cashier=new Thread(bank);
        accountant.setName(accountantName);
        cashier.setName(cashierName); 
        accountant.start();
        cashier.start();
    }
}
class Bank implements Runnable{
    int money=300;
    String accountantName,cashierName;
    public Bank(String s1,String s2){
        accountantName=s1;
        cashierName=s2;  
    }
    public void run(){
        saveOrTake(30);        //线程占有CPU资源期间调用了同步方法
    }
    public synchronized void saveOrTake(int number){    //同步方法
        if(Thread.currentThread().getName().equals(accountantName)){
           for(int i=1;i<=3;i++){
              money=money+number;  
              try {  Thread.sleep(1000); //存入30万稍歇一下,出纳仍不能使用该方法
              }             
              catch(InterruptedException e) {}
              System.out.println("我是"+accountantName+"目前帐上有"+money+"万");
           }
        }
        else if(Thread.currentThread().getName().equals(cashierName)){
           for(int i=1;i<=2;i++){
              money=money-number/2;  
              try{  Thread.sleep(1000);
}
              catch(InterruptedException e){}
              System.out.println("我是"+cashierName+"目前帐上有"+money+"万");
           }
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?