有两个人去银行对同一个账户存钱 每个人存三次 每次存1000元 存完后打印余额
是否存在线程安全问题?
package com.day6.test;
/**
* User: Json
* Date: 2021/8/18
* 两个用户
*
* //在继承这种方式中 慎用this 当锁使用 因为很多情况 this 是不唯一的
**/
public class Cus extends Thread{
private Back back;
public Cus(Back back){
this.back=back;
}
//开启多线程
@Override
public void run() {
// super.run();
this.setNum();
}
public void setNum(){
for (int i=1;i<=3;i++){
this.back.setNum(1000);
}
}
}package com.day6.test;
/**
* User: Json
* Date: 2021/8/18
* 银行
* 两个人同时存钱
**/
public class Back{
private int num; //账户余额0
public Back(int amount){
num=amount;
}
public Back() {
}
//存钱
//存在线程安全问题
public synchronized void setNum(int number){
num+=number;
System.out.println(Thread.currentThread().getName()+":余额还有"+num+"元");
}
}//测试
Back back = new Back(0);
Cus cus1 = new Cus(back);
Cus cus2 = new Cus(back);
cus1.setName("甲");
cus2.setName("乙");
cus1.start();
cus2.start();
















