1. 程式人生 > >銀行轉賬——多執行緒

銀行轉賬——多執行緒

package com.qyl.maipiao.one5;

public class Amount {
	private  Integer  balance;

	public Integer getBalance() {
		return balance;
	}

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

	public synchronized void save(int i) {
		System.err.println("======》第"+(i+1)+"次存錢操作!"
); System.err.println("存錢之前的餘額是 :" + getBalance() + " 本次存錢1000"); // 存錢操作 setBalance(getBalance()+1000); System.err.println("存錢之後的餘額是 :" + getBalance()); } public synchronized void get(int i) { System.out.println("======》第"+(i+1)+"次取錢操作!"); System.out.println("取錢之前餘額 :"+getBalance()+
"本次取錢1000"); //判斷賬戶餘額 if (getBalance()>=1000) { //取錢操作 setBalance(getBalance()-1000); System.out.println("取錢後還剩:"+getBalance()); }else { System.out.println("餘額不足,窮鬼!"); } } }
package com.qyl.maipiao.one5;

public class Save implements Runnable{
	private Amount amount;

	public Save
(Amount amount) { this.amount = amount; } @Override public void run() { for (int i = 0; i < 10; i++) { amount.save(i); } } }
package com.qyl.maipiao.one5;

public class Get implements Runnable{
	private Amount amount;

	public Get(Amount amount) {
		this.amount = amount;
	}

	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			amount.get(i);
		}
	}
}
package com.qyl.maipiao.one5;

import org.junit.Test;

public class BankTest {
	public static void main(String[] args) throws Exception {
		
		Amount amount = new Amount();
		
		amount.setBalance(0);
		
		Save s = new Save(amount);
		
		Get g = new Get(amount);
		
		new Thread(s).start();
		
		new Thread(g).start();	
	}
}