实例:两个人向同一个账户里面存钱
public class Demo {
public static void main(String[] args) {
//1.创建任务类对象
CunQian cunQian = new CunQian();
//2.创建线程
Thread thread1 = new Thread(cunQian);
Thread thread2 = new Thread(cunQian);
//3.开启线程
thread1.start();
thread2.start();
}
}
class Bank {
static int sum;
public void addMoney(int num){
//使用的同步代码块儿
synchronized (this) {//加锁
sum += num;
System.out.println(sum);
}
System.out.println("haha");
}
//使用的同步函数
//使用非静态的同步函数
//相当于默认在synchronized后面有this充当锁
public synchronized void addMoney1(int num){
sum += num;
System.out.println(sum);
}
//使用静态同步函数
//相当于默认在synchronized后面有Bank.class充当锁
public synchronized static void addMoney2(int num){
sum += num;
System.out.println(sum);
}
}
class CunQian implements Runnable{
Bank bank = new Bank();
public void run() {
for(int i=0;i<3;i++){
bank.addMoney(100);
}
}
}