package com.softeem.demo;

/**
* @authorleno 账户类 默认有余额,可以取款
*/

class Account2 {
   private float balance = 1000;

   public float getBalance() {
     return balance;
  }

   public void setBalance( float balance) {
     this.balance = balance;
  }

   /**
    * 取款的方法需要同步
    *
    * @parammoney
    */

   public synchronized void withdrawals( float money) {
     if (balance >= money) {
      System.out.println( "被取走" + money + "元!");
       try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
         // TODO Auto-generated catch block
        e.printStackTrace();
      }
      balance -= money;
    } else {
      System.out.println( "对不起,余额不足!");
    }
  }

}

/**
* @authorleno 银行卡
*/

class TestAccount1 extends Thread {

   private Account2 account;

   public TestAccount1(Account2 account) {
     this.account = account;
  }

  @Override
   public void run() {
    account.withdrawals(800);
    System.out.println( "余额为:" + account.getBalance() + "元!");
  }
}

/**
* @authorleno 存折
*/

class TestAccount2 extends Thread {

   private Account2 account;

   public TestAccount2(Account2 account) {
     this.account = account;
  }

  @Override
   public void run() {
    account.withdrawals(700);
    System.out.println( "余额为:" + account.getBalance() + "元!");
  }
}

public class YinHang {
   public static void main(String[] args) {
    Account2 account = new Account2();
    TestAccount1 testAccount1 = new TestAccount1(account);
    testAccount1.start();
    TestAccount2 testAccount2 = new TestAccount2(account);
    testAccount2.start();
  }
}