火车票系统模拟

本文通过多线程模拟了一个简单的火车票购票系统,演示了如何解决资源冲突问题,使用对象锁来实现线程间的同步控制,确保车票不会被重复出售。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

火车票购票系统模拟

package xiao;

public class XXiao {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根

ThreadSellTciket sTicket=new ThreadSellTciket();                //创建属于类ThreadSellTciket的对象sTicket。
        new Thread(sTicket).start();                            //创建3个同优先级的线程。
        new Thread(sTicket).start();
        new Thread(sTicket).start();
     }
}
    class ThreadSellTciket implements Runnable{                    //创建类ThreadSellTciket,实现接口Runnable。
        private int tickets=10;
        boolean flag=true;
        public void run(){                                             //重写方法run(),在方法run()中调用方法sale()。
        while(flag){
        sale();
    }
}
synchronized public void sale(){                             //创建同步方法sale()。
if(tickets>0){                                             //各个售票线程对10张车票共同进行售票。
    try{
        Thread.sleep(100);
    }
catch(Exception e){
      e.printStackTrace();
   }
    System.out.println(Thread.currentThread().getName()+"正在卖票:"+tickets);
    tickets--;
   }
    else{
    flag=false;             //如果车票售完,则将标识符flag的值设置为false,此时方法run()的循环条件不满足,从而结束方法run(),即结束线程。
     }
  }
}

运行结果:
这里写图片描述

知识点:
1)资源冲突。
2)对象锁。
3)线程间的同步控制。
4)线程组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值