Java---多线程售票

本文介绍了一个基于Java实现的多线程售票系统的具体代码。该系统通过实现Runnable接口完成多线程操作,并使用同步机制确保并发情况下票数正确递减。文章展示了如何通过创建多个线程模拟不同售票点同时进行售票的过程。

 

package day;

public class Mytd implements Runnable {         //通过实现Runnable接口来实现多线程
    private int ticketcount = 100;
    Object ob = new Object();                  //加锁
    private int m = 100;

    public Mytd(int t) {                       //有参构造方法
        this.ticketcount = t;
        this.m = t;
    }

    public Mytd() {                           //无参构造方法

    }

    public void sellticket() {                //卖票方法
       synchronized (ob) {                    //同步线程锁
            if (ticketcount > 0) {
                ticketcount--;
                int num = this.m - ticketcount;
                System.out.println(Thread.currentThread().getName()
                        + "卖出第" + num + "张票,还剩" + ticketcount + "张票");
            } else {
                System.out.println("票已经卖完");
                return;
            }
       }
    }

    @Override
    public void run() {
        while (ticketcount > 0) {
            sellticket();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}
package day;

public class Work {
    public static void main(String[] args) {
        Mytd run = new Mytd(100);
        Thread th1 = new Thread(run,"东风路售票点");           //开启五个线程
        Thread th2 = new Thread(run,"吉祥路售票点");
        Thread th3 = new Thread(run,"从动路售票点");
        Thread th4 = new Thread(run,"文明路售票点");
        Thread th5 = new Thread(run,"好听路售票点");
        th1.start();
        th2.start();
        th3.start();
        th4.start();
        th5.start();
    }
}

 

 

 

转载于:https://www.cnblogs.com/zxwen/p/9673227.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值