Java多线程例子8个窗口同时卖5张票(12306抢票机制)
国际惯例,先上代码:
package com.itqs;import java.util.ArrayList;
import java.util.List;public class ThreadStation {//定义售票线程类(也就是窗口)public static class Station extends Thread{//构造方法给线程名字赋值public Station(String name) {super(name); }//票数要静态定义static int tick=5;//静态钥匙static Object ob ="key"; //值是任意的//重写run方法,实现售票操作@Overridepublic void run() {List<Integer> list = new ArrayList<>();while (tick>0) {synchronized(ob) { //必须使用一个同步锁,进去的人会把钥匙拿在手上,出来后才能交出钥匙if (tick>0) {System.out.printf("%s卖出了第%d张票 \n",getName(),tick);list.add(tick);tick--;}else {System.out.printf("%s:票已售空 \n",getName());}}try {sleep((int)(Math.random()*3000)+1); //随机休息1-3000ms}catch (InterruptedException e) {e.printStackTrace();}}System.out.printf("%s 销售情况: %s \n",getName(),list.toString());}}public static void main(String[] args) {//实例化站台对象,并为每一个站台取名字(8个线程窗口一起卖5张票)for (int i=1; i<=8; i++) {String sName="窗口" + String.valueOf(i);Station Station = new Station(sName);Station.start();}}}
1,3个窗口同时卖20张票效果:
2,8个窗口同时卖5张票情况(跟国庆一样,票有点儿紧张啊。哈哈。要抢)
Java多线程例子8个窗口同时卖5张票(12306抢票机制)相关推荐
- Java多线程示例:4个售票员卖1000张火车票
//售票员 import java.util.Iterator; import java.util.Map;public class TicketSaler implements Runnable { ...
- java多线程学习二、安全与不安全示例:12306买票和银行取钱、java内存模型、内存可见性、线程同步块和方法
文章目录 前言 1. 什么是块,分为几种 2. 静态块与构造块的区别 一. 举例说明:并发情况下,线程不安全 1. 示例1:unsafe12306取票 2. 示例2:unsafe银行取钱 二.线程不安 ...
- java订单号 github_GitHub - github2zhang/J12306: 12306抢票程序JAVA版
J12306抢票助手 12306抢票程序JAVA版,自动登录-验证-查票-购票/自动候补.只需简单的配置即可运行进行快捷抢票. 使用说明 引入jar依赖 手动添加项目lib文件夹中的依赖包 配置文件c ...
- 12306抢票 JAVA客户端
基于JAVA写的12306抢票的客户端,上图,有兴趣的可以试试.云盘的下载地址是 http://aj9hmr54ac.l25.yunpan.cn/lk/QGHRr3QE7eUjt
- 银行java多线程例子_Java 多线程 之 银行ATM实例
package com.thread; import java.util.Scanner; public class TestBank { public static void main(String ...
- Java多线程例子讲解
一:知识点声明: 1.区别进程和线程:进程是静态概念,它的执行依赖线程进行. 2.进程的状态:就绪(等待cpu执行),运行,中止,阻塞(等待所需资源,进入阻塞态) 3.Java程序的main函数即是一 ...
- 多线程初级模拟12306抢票
package com.lzy.thread; /*** 共享资源,并发(线程安全)* @author Administration**/ public class eWeb12306 impleme ...
- 多线程实现多个窗口卖票问题
写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...
- 3个窗口卖票java_三个窗口同时卖火车票,如何用代码将该场景实现?
今天是我自学Java的第33天. 感谢你的陪伴,你的陪伴便是对我最大的鼓励. 话不多说,开始今天的学习:线程同步. 想必很多小伙伴应该都经历过去火车站买票的情况. 现有一个案例:火车站有3个售票窗口, ...
最新文章
- 使用node.js进行API自动化回归测试
- Spring 4 官方文档学习(十一)Web MVC 框架之异常处理
- PAT甲级1037 Magic Coupon:[C++题解]贪心
- 卡号身份证过期的影响
- keil5 仿真usart窗口没有限制_多体仿真:DS SIMULIA Simpack 2021
- java8学习之方法引用详解及默认方法分析
- mybatis源码学习方式
- Python标准库映射类型与可散列数据类型的关系
- anaconda 清华镜像及对应下载
- 【阵列信号处理02--基本概念、窄带信号、均匀线阵接收模型】
- 《德鲁克管理思想精要》读书笔记1 - 管理是什么?
- 中国人民大学与加拿大女王大学金融硕士项目不仅实现自我升华还能拿到闪亮文凭
- arm mali 天梯图_手机CPU天梯图2017年上半年新版 2017手机cpu性能排行天梯图
- linux dnw工具,dnw for linux(pc)
- 边云协同智能技术在电力领域的应用
- P3396 哈希冲突 (根号算法)
- SQL执行顺序与书写顺序
- ML:阿里云计算平台之搜索推荐演讲分享《多场景智能推荐助力业务增长》、《阿里云智能推荐应用实践:PAI-EasyRec Framework》、《新一代数仓架构漫谈》
- 睡眠好坏 枕头是关键!
- PCIe 资料收集2