资源下载地址:https://download.csdn.net/download/sheziqiong/87473207
资源下载地址:https://download.csdn.net/download/sheziqiong/87473207

1 并发数据结构

抽象模型

如图一所示,蓝色矩形代表火车,其上橙色的方块代表火车上的每个座位(因为查询、 购买、退票的三个方法都没有关于车厢的参数,所以我们在数据抽象时可以不用考虑火车的 车厢数,而将整个火车视为一个车厢),橙色方块上的第 i 个青色方块代表该座位在站点 i(i<stationNum)和站点 i+1 站点之间的路程被占用的情况。

数据结构

最重要的数据结构其实是 Seat 类。

class Seat {private Lock lock;//可重入锁private BitMap bitmap;//图一中的青色方块
}

Seat 类上的 BitMap 类。

class BitMap {private AtomicLongArray map;//记录座位在哪些区间被占用
}

map 对象用来记录座位在哪些区间被占用。

查询

查询时遍历所有座位,检查其中的 AtomicLongArray 对象 map 来判断该座位是否满足 满足要求。 查询是对座位的 atomic 对象 map 进行查询,该方法是无等待的。

购买

购票时系统在阈值次数内采用随机分配的方式产生车票,并对该车票进行检查,即查询 该车票是否可购买,如果可购买,则对该座位进行加锁(lock),之后再重复一次检查,若依 旧可购买,则对该 Seat 上的 bitmap 进行更改,之后解锁,其中的任何一步失败则重新随机 产生车票。如果随机购票次数超出了设定的阈值,则遍历本车所有的座位,直到购票成功, 或者由于无票而返回。 购票时用了锁,该方法是无死锁但可能饥饿。

退票

退票时先检查想要退的车票是否合法。若合法,则修改该 Seat 上的 AtomicLongArray 对象 map。 退票是对座位的 atomic 对象 map 进行操作,该方法是无等待的。

2 多线程测试程序

按照查询,购票,退票的比例,随机产生请求并统计每一次请求所需的平均时间和总的 吞吐量

3 系统的正确性和性能

正确性 单线程测试使用老师提供的工具,测试结果为通过。 多线程测试使用“计算所胡起”同学的多线程测试程序。结果如图二所示,通过

性能

测试设备课程所用服务器。
资源下载地址:https://download.csdn.net/download/sheziqiong/87473207
资源下载地址:https://download.csdn.net/download/sheziqiong/87473207

基于Java实现的火车票抢票并发数据结构处理相关推荐

  1. 四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果  二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现- ...

  2. 基于python的火车票订票系统的设计与实现_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统效果图如下所示: 具体代码如下所示: import urllib.request as request import http.cookiejar as coo ...

  3. GO-HOME我要回家JAVA2013版火车票抢票程序

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 最新版本12306 ...

  4. 微言软件出品——微言火车票抢票大师

    微言软件出品--微言火车票抢票大师 2012/1/1 19:26:30      微言软件 微言抢票大师,是全网首个具备抢票功能的软件, 依托研发团队强大的浏览器技术能力,使用嵌入式IE进入中铁官网购 ...

  5. php写抢票脚本,火车票抢票python代码公开揭秘!

    市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单.下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事. 该代码仅供参考,主要用于大家沟通 ...

  6. 火车票抢票API 根据乘客的车次与座席要求快速订票出票

    火车票抢票API 根据乘客的车次与座席要求快速订票出票:https://www.juhe.cn/docs/api/id/257 1.站站查询 接口地址:http://v.juhe.cn/grabTic ...

  7. 火车票抢票API 根据乘客的车次与座席要求快速订票出票 1

    火车票抢票API 根据乘客的车次与座席要求快速订票出票:https://www.juhe.cn/docs/api/... 1.站站查询 接口地址:http://v.juhe.cn/grabTicket ...

  8. 一、基于HTTPS协议的12306抢票软件设计与实现--实现效果

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  9. 用python写12306系统_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  Python实现12306火车票抢票系统.txt ] (友情提示:右键点 ...

最新文章

  1. 用拓扑排序检测有向图中是否有环
  2. MiniGUI - UNIX Domain Socket 封装
  3. 同软件多个线程设置不同ip_5-13网络编程(附带多线程死锁,线程通信)
  4. 设计模式学习笔记(总结篇:模式分类)
  5. java猜数游戏有次数限制_超有趣的数学小游戏,陪孩子孩子边玩儿边学
  6. Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)——类别预测
  7. spring Aop实现身份验证和springboot异常统一处理
  8. 洛谷P4555 [国家集训队]最长双回文串(manacher 线段树)
  9. 低代码发展专访系列之一:低代码平台产品的使用者都是谁?
  10. Golang 大杀器之跟踪剖析 trace(转载)
  11. easyui 添加下拉框数据_功能更新:熟用仪表盘这个功能,你可以少建90%的数据报表...
  12. Unable to round-trip http request to upstream: EOF问题
  13. Vue中使用watch来监听数据变化
  14. using的一种用法
  15. Eclipse离线安装包下载地址
  16. 家庭一台电脑多人上网方法
  17. SAP License:ERP实施方案包括哪些内容?
  18. 进下流行移动开发框架对比
  19. python在abaqus中的应用pdf_Python语言在Abaqus中的应用
  20. 联想拯救者R7000P加硬盘

热门文章

  1. http://www.scxp.com/google.htm
  2. ADS5012H手持示波器介绍和拆机
  3. python爬虫urllib2模块的基本使用(学习笔记一)
  4. 周鸿祎闭关3个月之后发言:我没老,我要做互联网圈鲨鱼!
  5. Android实现页面跳转
  6. 淘宝启动卖家实人认证 杜绝套用信息开店
  7. 淡奶油怎么打发 淡奶油打发技巧分享
  8. CKA考试习题:K8S日志、监控与应用管理
  9. GPS从入门到放弃(二十五) --- 卡尔曼滤波
  10. 启示录:美柚如何度过“九死一生”魔咒?