当存在两个及以上的线程对象共享资源且多个语句操作共享资源时,会出现多个线程先后更改数据,可能会出现线程安全问题。
保证线程安全的方法有多种,譬如使用synchronized关键字同步代码块,或采用同步方法、使用Lock等。
以银行存取款为例,当两个线程分别向账户中进行存钱和取钱两个操作时,采用加锁机制,保证共享对象在被一个线程调用时其它线程不能访问。
创建个人账户类
public class Person {
private int money=0;
private int sum;
public int getmoney() {
return money;
}
public void savemoney(int sum) {
this.sum=sum;
this.money=money+sum;
System.out.println("存入成功");
}
public void takemoney(int sum) {
this.sum=sum;
this.money=money-sum;
System.out.println("取出成功"<