Java线程同步
为了保证在存款或取款的时候,不允许其他线程对账户余额进行操作,需要将Bank对象进行锁定,使用关键字synchronized实现
package Threadproj;
public class Bank {
private String account;
private int balance;
public Bank(String account, int balance) {
super();
this.account = account;
this.balance = balance;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
@Override
public String toString() {
return account + "账户的余额为:" + balance;
}
// 存钱
public synchronized void saveAcount() {
int balance = getBalance();
balance += 100;
setBalance(balance);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("账户的余额为:" + balance);
}
// 取钱
public void drawAcount() {
synchronized (this) {
int balance = getBalance();
balance -= 200;
// 修改账户余额
setBalance(balance);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("取钱后账户的余额为:" + balance);
}
}
public static void main(String[] args) {
}
}