有两个人去银行对同一个账户存钱 每个人存三次 每次存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();