JUC系列之模拟抢票(N人同时抢票,票不足系统补仓,N-M人继续抢票)

前言10.1要去苏州玩。9月初去携程买票,发现过几天才放票现在可以预约抢票。用户流程 : 选票 -> 选预约 -> 选抢票类型极速/快速/免费  -> 支付票价和抢票费用  -> 自动帮抢票携程这个流程我猜测是(当然我没有做过和12306或什么票务接口对接的工作  ) 记录用户选票类型和票信息,等放票的时候通过接口调用买票这个接口可能是多次提交或提交一次设定
摘要由CSDN通过智能技术生成

下载 http://download.csdn.net/download/crazyzxljing0621/9969870


前言


10.1要去苏州玩。

9月初去携程买票,发现过几天才放票

现在可以预约抢票。

用户流程 : 选票 -> 选预约 -> 选抢票类型极速/快速/免费  -> 支付票价和抢票费用  -> 自动帮抢票

携程这个流程我猜测是(当然我没有做过和12306或什么票务接口对接的工作  )

  1.  记录用户选票类型和票信息,等放票的时候通过接口调用买票这个接口可能是多次提交或提交一次设定要购买的票信息数组?
  2.  得到票后将票分配给所有预付款用户,当然按照抢票类型优先分配,按照如果一个人一次买了3张票,优先分配邻座。
  3.  因为很少买火车票,百度说火车票是分批次放票,比如13点100张票,14点200张票这样。。
  4.  所以只要还有放票的可能携程还是继续给未得到票的人抢票,即便放票完毕。还有退票不是么

恰逢正在看juc,觉得这个可以做一个小demo来巩固一下

我的demo简单多了

  1. 设定N个用户
  2. N个用户全部预约就位
  3. 系统开始放票M张,总共会放Y张票
  4. 每放票M张,则用户开始同时去抢票
  5. 抢不到的等着继续放票
  6. 放票系统发现M张票强没了,会继续放票
  7. 用户也继续抢票
  8. 最后放票完毕,没有余票了。结束程序,记录抢票成功的用户


目录结构




代码

 先看看最终结果
总共21张票,25个人同时并发去抢,每次放票5张,每隔几秒再次放票,直到票售罄
买票用户 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] | 就位
sys : 开始放票
/**
**票仓[[票0, 票1, 票2, 票3, 票4]]
**增加了5张票
**/
用户[25]的抢票结果为 true[票0] 
用户[2]的抢票结果为 true[票1] 
用户[4]的抢票结果为 true[票2] 
用户[6]的抢票结果为 true[票3] 
用户[8]的抢票结果为 true[票4] 
/**
**票仓[[票5, 票6, 票7, 票8, 票9]]
**增加了5张票
**/
用户[10]的抢票结果为 true[票5] 
用户[12]的抢票结果为 true[票6] 
用户[14]的抢票结果为 true[票7] 
用户[16]的抢票结果为 true[票8] 
用户[18]的抢票结果为 true[票9] 
/**
**票仓[[票10, 票11, 票12, 票13, 票14]]
**增加了5张票
**/
用户[20]的抢票结果为 true[票10] 
用户[22]的抢票结果为 true[票11] 
用户[24]的抢票结果为 true[票12] 
用户[1]的抢票结果为 true[票13]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值