多线程抢票

本文介绍了一个使用多线程模拟售票系统的设计。通过创建一个包含票号、状态和拥有者的车票类,以及继承自线程的乘客类,模拟了抢票过程。每个乘客线程会检查票库并尝试购买未售出的票,每抢到20张票后自动停止。整个系统确保了线程安全和公平性,避免了票号连号、多抢或少抢的情况。
摘要由CSDN通过智能技术生成

 功能实现:多线程模拟售票系统

定义一个车票类,车票类拥有票号属性、  车票状态(未售、售出)属性和拥有者(String类型)属性;在主线程中定义一个票库(ArrayList数组列表)初始化票库并生产200张票;
    
定义一个乘客类继承自线程类,有一个名字(String类型)属性, 乘客类每隔10毫秒就去票库中查看有没票,如果有票就抢一张过来 (把车票标为售出状态,并把车票的拥有者标为自己的名字), 每个乘客抢到20张票就停止运行。

 在主线程中创建10个乘客类并启动它们(开始抢票), 要求每个乘客抢到的票不连号,不能多抢或少抢。抢完后打印出每个人抢到的票号。

代码实现部分:

import java.util.ArrayList;


public class Main {

    static ArrayList<Ticket> mTicketList = new ArrayList<Ticket>();//票库
    
    public static void main(String[] args) {
        for(int i=0;i<200;i++){
            Ticket t = new Ticket();
            t.ticketNum = i + 100;
            mTicketList.add(t);
        }
        Passenger[] passengers = new Passenger[10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值