銀行轉賬——多執行緒
阿新 • • 發佈:2018-12-16
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();
}
}