本案例要求编写一个模拟12306售票的系统,要求如下:假设需要抢票十次才可以抢到一张票,会员需要300毫秒抢一次,普通用户需要800毫秒抢一次。

代码如下

package lianxi;//模拟12306售票import java.lang.*;public class Lianxi28 {public static void main(String[] args) {Ticket a=new Ticket();new Thread(a,"普通用户").start();new Thread(a,"会员").start();}
}class Ticket implements Runnable{        public int l=1;//目前该买第几张了,总共10张票public int usernumber=0;//普通用户抢票次数public int vipnumber=0;//会员抢票次数Object lock=new Object();//定义锁public void run() {while(true){ synchronized (lock) { if(l>10) {break;}            if(Thread.currentThread().getName().equals("普通用户")) {usernumber++;            try{Thread.sleep(800);//800毫秒抢一次                 }catch(InterruptedException e){e.printStackTrace();}if(usernumber==10) {//抢够10次可以抢到一张票System.out.println(Thread.currentThread().getName()+"购买到了第"+l+"张票");usernumber=1;l++;                }if(l<=10) {System.out.println("普通用户本轮第"+usernumber+"次抢票");}try{Thread.sleep(100);   // 当前线程休眠0.1秒             }catch(InterruptedException e){e.printStackTrace();}}else {vipnumber++;try{Thread.sleep(300);//300毫秒抢一次 }catch(InterruptedException e){e.printStackTrace();}if(vipnumber==10) {//抢够10次可以抢到一张票System.out.println(Thread.currentThread().getName()+"购买到了第"+l+"张票");vipnumber=1;l++;                 }if(l<=10) {System.out.println("会员本轮第"+vipnumber+"次抢票"); }try{Thread.sleep(100);   // 当前线程休眠0.1秒             }catch(InterruptedException e){e.printStackTrace();}}                         }        }}
}

运行结果:

【Java编程学习】案例8-4 模拟12306售票相关推荐

  1. Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案例

    Zookeeper [黑马程序员Zookeeper视频教程,快速入门zookeeper技术] 文章目录 Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案 ...

  2. java编程学习入门

    java编程学习入门 自java出来之后,就被很多人欢迎,虽然开始的时候有点麻烦,但是发展到现在很多人企业都在使用java做一些应用,包括了一些政府部门,因此java工程师需求也越来越大了.那么下面小 ...

  3. 江阴 java_江阴学java编程,江阴java编程学习哪里好,江阴java编程学习一般要多久才能学会...

    江阴学java编程,江阴java编程学习哪里好,江阴java编程学习一般要多久才能学会 首页 > 软件 > 江阴学java编程 作者:镀金池   发布时间:2019-02-14 11:40 ...

  4. java收费学java,讷河学java编程,讷河java编程学习的学校,讷河java编程学习一般怎么收费...

    讷河学java编程,讷河java编程学习的学校,讷河java编程学习一般怎么收费 首页 > 软件 > 讷河学java编程 作者:镀金池   发布时间:2019-02-20 07:00 Gr ...

  5. 莆田Java开发_莆田学java编程,莆田java编程学习学校,莆田java编程学习一般能拿多少工资...

    莆田学java编程,莆田java编程学习学校,莆田java编程学习一般能拿多少工资 首页 > java > 莆田学java编程 作者:镀金池   发布时间:2017-10-18 06:51 ...

  6. Zookeeper命令操作(初始Zookeeper、JavaAPI操作、分布式锁实现、模拟12306售票分布式锁、Zookeeper集群搭建、选举投票)

    Zookeeper命令操作(初始Zookeeper.JavaAPI操作.分布式锁实现.模拟12306售票分布式锁.Zookeeper集群搭建.选举投票) 1.初始Zookeeper Zookeeper ...

  7. Java编程学习并不难,有坚持的动力与良好的心态尤为重要

    时间过得很快,回想刚学习Java编程开发的懵懂无知,到现在可以做出简单的项目,可以明显的感觉到自己确实进步了.Java编程其实并不难学,难的是你能够一如既往的保持好的学习态度,并愿意努力的去背.去记. ...

  8. Java编程学习:初学者怎样学好Java

    零基础学生只要方法得当,完全可以掌握Java编程.这里也是我个人的学习经历下面总结出来的几点学习Java的方法,仅供大家参考. 1.理解Java思想 Java是一门面向对象编程语言.向对象编程是Jav ...

  9. Java编程学习笔记(一)

    编程学习笔记--JAVA背景(一) 文章目录 编程学习笔记--JAVA背景(一) 编程学习笔记--JAVA注意事项(二) (一)从Hello world 开始: (二) Java 开发注意事项和细节说 ...

最新文章

  1. 启动jar包 服务方式
  2. mybatis 如何判断重复插入_MyBatis常见面试题3:数据库插入重复如何处理
  3. Blazor University (7)组件 — 双向绑定
  4. JDBC元数据操作(一)-- DatabaseMetaData接口详解
  5. java的原生数据类型_Java中的8种原生数据类型(Primitive Data Types)分析
  6. linux指令:echo, head, tail
  7. Html.RenderPartial使用三个参数
  8. 设计模式-创建型模式-模板方法
  9. VB.NET工作笔记003---使用ASP_vbs脚本_或vb.net调用Sqlserver DTS文件
  10. pytorch创建tensor
  11. 进度计划管理软件 PowerPlan (包含GRID,甘特图,直方图,网络图,跟踪逻辑,时标概要图等功能)
  12. 易语言-通过快捷方式.lnk文件获取.exe源文件地址
  13. android随手记(持续更新)
  14. 在Qt中设置程序图标的方法介绍
  15. Axure RP8 授权码亲测可用
  16. canu三代组装软件安装
  17. 机器学习(周志华) 参考答案 第十四章 概率图模型 14.9
  18. LeetCode 188. Best Time to Buy and Sell Stock IV(股票买卖)
  19. 高职高考数学可以用计算机吗,什么学习水平高职高考数学可以答满分
  20. A simple but tough-to-beat baseline for sentence embedding

热门文章

  1. python 抖音第三方登录_前后端分离抖音第三方授权登录
  2. Mask Rcnn tensorflow(keras前端)模型 c++预测 windows系统
  3. 分解连续自然数的和_[算法]正整数分解为几个连续自然数之和
  4. 顺序结构程序设计例题:从键盘输入梯形的上、下底边长度和高,计算梯形的面积。
  5. 毕业设计 stm32自动泊车系统 智能小车
  6. AI 工具合辑盘点,总有一款适合你
  7. 四旋翼无人机调试时,电机滴滴滴响问题及解决办法汇总
  8. 西门子水处理1200PLC程序模板 Plc程序包含功能块,功能块为SCL编写 含模拟量换算功能块
  9. DaisyDisk怎样以管理员身份扫描磁盘或文件夹
  10. 如何实现Jmeter录制脚本