JAVA——存钱

82 阅读1分钟

需求

多个客户去银行存钱
多个用户去存钱=多个执行任务
银行=共享资源
服务窗口=多个执行路径

代码

public class Main{
    public static void main(String[] args){
        Bank bank=new Bank();
        Consumer c1=new Consumer(bank);
        Consumer c2=new Consumer(bank);
        Consumer c3=new Consumer(bank);
        
        Thread t1=new Thread(c1);
        Thread t2=new Thread(c2);
        Thread t3=new Thread(c3);
        
        t1.start();
        t2.start();
        t3.start();
    }
} 
class Bank{
    private int sum;//共享数据,会产生安全问题
    private Object lock = new Object();
 /*
    public void add(int num){
        synchronized(lock){
        sum=sum+num;
        System.out.println("sum="+sum);
        }
    }
    */
    public synchronized void add(int num){
        sum=sum+num;
        System.out.println("sum="+sum);
        }
}
class Consumer implements Runnable{
    Private Bank bank;
    public Consumer(Bank bank){
        this.bank=bank;
    }
    @Override
    public void run(){
        for(int i=0;i<3;i++){
            bank.add(100);
        }
    }
}