package com.kxw.thread.trandtion; /** * Created by kangxiongwei on 2015/7/3. * 银行取钱案例 */ public class FetchMoney { public static void main(String[] args){ Bank bank = new Bank(); Runnable t1 = new MoneyThread(bank); //柜台 Runnable t2 = new MoneyThread(bank); //ATM new Thread(t1).start(); new Thread(t2).start(); } } class Bank{ private int money = 1000; /** * 取钱 * @param number * @return */ public synchronized int getMoney(int number){ if(number < 0){ return -1; } else if(number > money){ return -2; } else if(money < 0){ return -3; } else { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } money -= number; return number; } } } class MoneyThread implements Runnable{ private Bank bank; public MoneyThread(Bank bank){ this.bank = bank; } @Override public void run() { System.out.println(bank.getMoney(800)); } }