多线程卖票复习传统版一

多线程卖票复习传统版一

多线程卖票问题

假设现在有3个线程同时要卖出30张票,代码如何实现,请看传统版:

class Ticket {

    private int number = 30;

    public synchronized void saleTicket(){
        if(number > 0){
            System.out.println(Thread.currentThread().getName() + "\t卖出第:" +(number--) + "\t还剩:" + number);
        }
    }

}

class SaleTicket{

    public static void main(String[] args) {
        Ticket ticket = new Ticket();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <= 30; i++) {
                    ticket.saleTicket();
                }
            }
        },"AAA").start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <= 30; i++) {
                    ticket.saleTicket();
                }
            }
        },"BBB").start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <= 30; i++) {
                    ticket.saleTicket();
                }
            }
        },"CCC").start();

    }

}
```java

执行结果如下:

AAA	卖出第:30	还剩:29
AAA	卖出第:29	还剩:28
AAA	卖出第:28	还剩:27
AAA	卖出第:27	还剩:26
AAA	卖出第:26	还剩:25
AAA	卖出第:25	还剩:24
AAA	卖出第:24	还剩:23
AAA	卖出第:23	还剩:22
AAA	卖出第:22	还剩:21
AAA	卖出第:21	还剩:20
AAA	卖出第:20	还剩:19
AAA	卖出第:19	还剩:18
AAA	卖出第:18	还剩:17
AAA	卖出第:17	还剩:16
AAA	卖出第:16	还剩:15
BBB	卖出第:15	还剩:14
BBB	卖出第:14	还剩:13
BBB	卖出第:13	还剩:12
BBB	卖出第:12	还剩:11
BBB	卖出第:11	还剩:10
BBB	卖出第:10	还剩:9
BBB	卖出第:9	还剩:8
BBB	卖出第:8	还剩:7
BBB	卖出第:7	还剩:6
BBB	卖出第:6	还剩:5
BBB	卖出第:5	还剩:4
BBB	卖出第:4	还剩:3
BBB	卖出第:3	还剩:2
BBB	卖出第:2	还剩:1
BBB	卖出第:1	还剩:0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值