银行卡账户入账支出问题

问题:
1、一个银行卡账户,一个线程实现每5s扣除1200元;
2、一个线程实现每3s入账100元;
3、银行卡本身每2s入账200元;

代码:

/**
 * @author lzq
 *
 */

class ZhangHu {
    private int number = 0;

    public synchronized void get(int x) {
        if(number < x) {
            System.out.println("余额不足");
            return;
        }
        number = number-x;
        System.out.println("出账"+x+"; 余额"+number);
    }

    public synchronized void put(int x) {
        number = number+x;
        System.out.println("入账"+x+"; 余额"+number);
    }
}

class XiangChen1 extends Thread {
    ZhangHu zh;

    public XiangChen1(ZhangHu zh) {
        this.zh = zh;
    }

    public void run() {
        while(true) {
        try {
            Thread.sleep(3000);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
        zh.put(100);
        }
    }
}


class XiangChen2 extends Thread {
    ZhangHu zh;

    public XiangChen2(ZhangHu zh) {
        this.zh = zh;
    }

    public void run() {
        while(true) {
        try {
            Thread.sleep(5000);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
        zh.get(1200);
        }
    }
}

public class TestDemo15 {

    public static void main(String[] args) {
        ZhangHu y = new ZhangHu();
        XiangChen1 x1 = new XiangChen1(y);
        XiangChen2 x2 = new XiangChen2(y);

        x1.start();
        x2.start();

        while(true) {
            try {
                Thread.sleep(2000);
            }catch(InterruptedException e) {
                e.printStackTrace();
            }
            y.put(200);
        }
    }

}

运行结果:

入账200; 余额200
入账100; 余额300
入账200; 余额500
余额不足
入账200; 余额700
入账100; 余额800
入账200; 余额1000
入账100; 余额1100
入账200; 余额1300
出账1200; 余额100
入账200; 余额300
入账100; 余额400
入账200; 余额600
余额不足
入账100; 余额700
入账200; 余额900
入账100; 余额1000
入账200; 余额1200
出账1200; 余额0
入账200; 余额200
入账100; 余额300
入账200; 余额500
入账100; 余额600
入账200; 余额800

猜你喜欢

转载自blog.csdn.net/QQ2899349953/article/details/82724480