iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java多线程实现模拟12306火车站售票系统
  • 186
分享到

Java多线程实现模拟12306火车站售票系统

2024-04-02 19:04:59 186人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

该系统一共涉及到3个类: 车票(Ticket) 12306系统(System12306) 售票窗口(Window) 车票类,涉及三个属性: 起始

该系统一共涉及到3个类:

  • 车票(Ticket)
  • 12306系统(System12306)
  • 售票窗口(Window)

车票类,涉及三个属性:

  • 起始站
  • 终点站
  • 票价

public class Ticket {
    //起始站
    private String startStation;
    //终点站
    private String destination;
    
    //票价
    private Float price;
    public Ticket(){}

    public Ticket(String startStation, String destination, Float price) {
        this.startStation = startStation;
        this.destination = destination;
        this.price = price;
    }
    //为了让打印输出时方便,我们重写toString方法
    public String toString() {
        StringBuilder builder = new StringBuilder("[");
        builder.append(this.startStation);
        builder.append("--->");
        builder.append(this.destination);
        builder.append(":");
        builder.append(this.price);
        builder.append("]");
        return builder.toString();
    }

    //get() and set()....

}

12306系统,有一个属性—>Vector集合,有一个方法—>获取一张车票getTicket()

  • 利用Vector集合存储该系统所有的车票
  • 利用Vector的线程安全特性,同一时间只能有一个线程操作该集合,保证安全
  • 并且该系统应该是单例的

public class System12306 {
    //设计一个单例模式
    private System12306(){}
    private static volatile System12306 sys;
    public static System12306 getInstance(){
        if (sys == null){
            synchronized (System12306.class){
                if(sys == null)
                    sys = new System12306();
            }
        }
        return sys;
    }
    //属性,用一个集合存票,我们使用线程安全的Vector,或者使用Stack,它继承了Vector
    private Vector<Ticket> tickets = new Vector<>();
    private String[] starts = {"北京","天津","太原","运城","西安"};
    private String[] ends = {"上海","武汉","苏州","深圳","昆明","广州"};
    //当前系统创建后,就给tickets集合赋值
    {
        for(int i = 10;i<100;i++){//一共90张票
            int r1 = (int)(Math.random()*starts.length);
            int r2 = (int)(Math.random()*ends.length);
            float price = r1*r2*5+140;
            tickets.add(new Ticket(starts[r1],ends[r2],price));
        }
    }
    //设计一个方法,从集合中获取一张票
    public Ticket getTicket(){
        try {
            return tickets.remove(0);
        }catch (Exception e){
            return null;
        }
    }
}

售票窗口类,有一个属性—>窗口名称,有一个方法—>出售车票sellTicket()

同一时间有多个窗口同时售票,该类实现了Runnable接口,达到多线程并发的效果


public class Window implements Runnable {
    private String windowName;//窗口的名字
    public Window(String windowName){
        this.windowName = windowName;
    }
    @Override
    public void run() {
        this.sellTicket();
    }
    public void sellTicket(){
        while (true){
            System12306 sys = System12306.getInstance();
            Ticket ticket = sys.getTicket();
            if(ticket==null){
                System.out.println("对不起,"+windowName+"窗口车票已售完...");
                break;
            }
            System.out.println("从"+windowName+"窗口售出:"+ticket);
        }
    }
}

测试代码:


public class TestMain {
    public static void main(String[] args) {
        Window win1 = new Window("北京西站");
        Window win2 = new Window("运城北站");
        Window win3 = new Window("太原南站");
        new Thread(win1).start();
        new Thread(win2).start();
        new Thread(win3).start();
    }
}

多线程并发执行的效果:

在这里插入图片描述

到此这篇关于Java多线程实现模拟12306火车站售票系统的文章就介绍到这了,更多相关Java 模拟12306售票系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java多线程实现模拟12306火车站售票系统

本文链接: https://www.lsjlt.com/news/126863.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java多线程实现模拟12306火车站售票系统
    该系统一共涉及到3个类: 车票(Ticket) 12306系统(System12306) 售票窗口(Window) 车票类,涉及三个属性: 起始...
    99+
    2024-04-02
  • Java多线程如何实现模拟12306火车站售票系统
    这篇文章主要介绍Java多线程如何实现模拟12306火车站售票系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!该系统一共涉及到3个类:车票(Ticket)12306系统(System12306)售票窗口(Windo...
    99+
    2023-06-15
  • Python多线程实现模拟火车站售票
    本文实例为大家分享了Python多线程模拟火车站售票的具体代码,供大家参考,具体内容如下 Python的标准库提供了两个模块:thread和threading,thread是低级模块...
    99+
    2024-04-02
  • java多线程之火车售票系统模拟实例
    1.前言为了学习多线程共享与通信,我们模拟一个火车售票系统,假设有10张火车票,三个窗口(也就是三个线程)同时进行售票。2.非同步代码package com.tl.skyLine.thread; public class SellTic...
    99+
    2023-05-31
    java 多线程 模拟售票
  • Java 多线程的火车站售票实例分析
    这篇文章给大家介绍Java 多线程的火车站售票实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。package com.thread;import java.util.*;public ...
    99+
    2023-06-02
  • Java实战之多线程模拟站点售票
    目录一、实验题目二、分析三、完整代码:一、实验题目 二、分析 哦吼,这次的实验题目是一道非常经典的多线程买票问题。题目要求我们创建5个线程来模拟卖票,当然这其中就包含多线程存在也就...
    99+
    2024-04-02
  • java多线程模拟实现售票功能
    铁道部发布了一个售票任务,要求销售1000张票,要求有3个窗口来进行销售,请编写多线程程序来模拟这个效果。 1 线程类 测试方法: public static void main...
    99+
    2024-04-02
  • 怎么在Java中利用多线程模拟站点售票
    怎么在Java中利用多线程模拟站点售票?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、实验题目二、分析哦吼,这次的实验题目是一道非常经典的多线程买票问题。题目要求我们创建...
    99+
    2023-06-15
  • Java多线程之简单模拟售票功能
    一、创建 二、完整代码 package com.ql; import lombok.SneakyThrows; import okhttp3.Call; import okh...
    99+
    2024-04-02
  • Java多线程编程小实例模拟停车场系统
    下面分享的是一个Java多线程模拟停车场系统的小实例(Java的应用还是很广泛的,哈哈),具体代码如下:Park类public class Park {boolean []park=new boolean[3]; public bool...
    99+
    2023-05-30
    java 多线程 ava
  • Java实战之火车票预订系统的实现
    目录 一、项目运行二、效果图三、核心代码个人中心Controller管理员和员工登陆控制用户管理操作 一、项目运行 环境配置: Jdk1.8 + Tomcat8....
    99+
    2024-04-02
  • 基于JSP微信小程序汽车票订票售票系统设计与实现
    第1步(数据库操作):     导入sql数据库 第2步(网站发布):     使用ideal导入管理系统     设置根目录下 conn.jsp的数据库连接 和 网址地址(小程序使用)     运行站点,登录后台测试 第3步(小程序发布...
    99+
    2023-08-31
    微信小程序 小程序
  • Java实现火车票预订系统的代码怎么写
    本文小编为大家详细介绍“Java实现火车票预订系统的代码怎么写”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java实现火车票预订系统的代码怎么写”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 一、项...
    99+
    2023-06-29
  • java多线程模拟交通灯管理系统
    本文实例为大家分享了java多线程模拟交通灯管理系统的具体代码,供大家参考,具体内容如下 一、项目业务逻辑分析 项目需求:模拟实现十字路口的交通灯管理系统逻辑,要求如下: ...
    99+
    2024-04-02
  • Java利用多线程模拟银行系统存钱问题
    目录多线程6(模拟银行系统存钱)1.题目2.解题思路3.代码详解多线程6(模拟银行系统存钱) 1.题目 模拟一个简单的银行系统,使用两个不同的线程向同一个账户存钱。 实现:使用syn...
    99+
    2024-04-02
  • Java多线程模拟银行系统存钱问题详解
    目录一、题目描述二、解题思路三、代码详解多学一个知识点一、题目描述 题目:模拟一个简单的银行系统,使用两个不同的线程向同一个账户存钱。 实现:使用特殊域变量volatile实现同步。...
    99+
    2024-04-02
  • 基于java微信小程序景区景点售票系统设计与实现
    开发概要 小程序开发:微信开发者工具(MINA框架) 后台环境:JDK1.8 + Tomcat8 后台开发语言:Java 后台开发框架:springboot 后台模板引擎:Thymeleaf 后台开发工具:Idea2020 ...
    99+
    2023-09-01
    景区小程序 Powered by 金山文档
  • java多线程实现交通灯管理系统
    本文实例为大家分享了java多线程实现交通灯管理系统的具体代码,供大家参考,具体内容如下 一. 项目要求 模拟实现十字路口的交通灯管理系统逻辑。详细需求例如以下: 1、异步随机生...
    99+
    2024-04-02
  • 基于Java(SpringBoot框架)毕业设计作品成品(07)在线选座电影售票购票系统设计与实现
    博主介绍:《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题...
    99+
    2023-10-24
    课程设计 电影院售票系统 电影院订票系统毕业设计 毕设 毕业设计 计算机毕业设计
  • Java毕业设计实战项目之在线服装销售商城系统的实现流程
    一、项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Ecli...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作