package com.yimu.homework;import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;/*** @author yimu* @date 2020/9/7  18:00* 某公司组织年会,会议入场时有两个入口,在入场时每位员工都能获取一张双色球彩票,假设公司有100个员工,利用多线程模拟年会入场过程,*     并分别统计每个入口入场的人数,以及每个员工拿到的彩票的号码。* 【双色球规则:*     1“双色球”彩票投注区分为红色球号码区和蓝色球号码区。*  2“双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1--33中选择;蓝色球号码从1--16中选择。】*     线程运行后打印格式如下:*     编号为: 2 的员工 从后门 入场! 拿到的双色球彩票号码是: [17, 24, 29, 30, 31, 32, 07]*     编号为: 1 的员工 从后门 入场! 拿到的双色球彩票号码是: [06, 11, 14, 22, 29, 32, 15]*     从后门入场的员工总共: 13 位员工*     从前门入场的员工总共: 87 位员工*/
public class Test {public static void main(String[] args) {ExecutorService pool = Executors.newFixedThreadPool(2);pool.submit(new FrontDoor());pool.submit(new LaterDoor());}}
package com.yimu.homework;import java.util.LinkedHashSet;/*** @author yimu* @date 2020/9/7  20:08*/
public class Employee {private static Employee employee;private int id;private String door;private String number;public static int empNumber = 10000;private void employee(){}public static Employee getEmployee() {if (employee == null) {employee = new Employee();}return employee;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getDoor() {return door;}public void setDoor(String door) {this.door = door;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}@Overridepublic String toString() {return "Employee{" +"id=" + id +", door='" + door + '\'' +", number='" + number + '\'' +'}';}public static Employee creatEmp(){int r;int b;LinkedHashSet<String> linkedHashSet1 = new LinkedHashSet<>();Employee employee = getEmployee();while (linkedHashSet1.size() < 6) {r = (int) Math.floor(Math.random() * 32+1);linkedHashSet1.add(r < 10 ? "0" + r : "" + r);}b = (int) Math.floor(Math.random() * 15+1);StringBuffer stringBuffer = new StringBuffer();stringBuffer.append("[");for (String s : linkedHashSet1) {stringBuffer.append(s+",");}stringBuffer.append(b < 10 ? "0" + b : "" + b);stringBuffer.append("]");employee.setNumber(stringBuffer.toString());return employee;}
}
package com.yimu.homework;/*** @author yimu* @date 2020/9/7  19:12*/
public class FrontDoor implements Runnable{@Overridepublic void run() {int i=0;while(true){synchronized (Employee.getEmployee()){Employee employee = Employee.creatEmp();if (Employee.empNumber > 0) {employee.setId(Employee.empNumber);Employee.empNumber--;employee.setDoor("从前门");i++;System.out.println("编号为:"+employee.getId()+"的员工,"+employee.getDoor()+"入场! 拿到的双色球彩票号码是:"+employee.getNumber());}if (Employee.empNumber == 0) {System.out.println("从前门入场的员工总共:"+i+"位员工");return;}//前门-后门-前-后...
//                A.getA().notify();
//                try {//                    A.getA().wait();
//                } catch (InterruptedException e) {//                    e.printStackTrace();
//                }}}}
}
package com.yimu.homework;/*** @author yimu* @date 2020/9/7  19:11*/
public class LaterDoor implements Runnable{@Overridepublic void run() {int i=0;while (true){synchronized (Employee.getEmployee()){Employee employee = Employee.creatEmp();if (Employee.empNumber > 0) {employee.setId(Employee.empNumber);Employee.empNumber--;employee.setDoor("从后门");i++;System.out.println("编号为:"+employee.getId()+"的员工,"+employee.getDoor()+"入场! 拿到的双色球彩票号码是:"+employee.getNumber());}if (Employee.empNumber == 0) {System.out.println("从后门入场的员工总共:"+i+"位员工");return;}
//                A.getA().notify();
//                try {//                    A.getA().wait();
//                } catch (InterruptedException e) {//                    e.printStackTrace();
//                }}}}
}

多线程练习题(双色球)相关推荐

  1. java 多线程 选择题_Java多线程之三道多线程练习题

    三道多线程练习题 接下来,我们来做三道题: 第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个 ...

  2. python 选择题 多线程_python多线程练习题

    python多线程练习题 多线程练习题目,涉及知识点较多,属于很好的练习题. 题目要求 通过多线程实现类似linux中的>>功能,也就是将日志记录到指定的文件中. 题目分析 基本为main ...

  3. 【Java】集合+I/O流+多线程の练习题+面试题

    一. Collection Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集 ...

  4. 二十六、多线程练习题

    第1关:顺序输出 任务描述 本关任务:利用多线程相关知识控制三个线程,依照先后顺序顺序输出. 相关知识 (略) 编程要求 请仔细阅读右侧代码,在 Begin-End 区域内进行代码补充,使线程依照先后 ...

  5. Java高级特性 - 多线程练习题

    第1关:顺序输出 任务描述 本关任务:利用多线程相关知识控制三个线程,依照先后顺序顺序输出. 相关知识(略) 编程要求 请仔细阅读右侧代码,在 Begin-End 区域内进行代码补充,使线程依照先后顺 ...

  6. 头歌Educoder——Java高级特性 - 多线程练习题

    文章目录 第1关:顺序输出 任务描述 相关知识(略) 编程要求 测试说明 代码示例 第2关:售票窗口 任务描述 相关知识(略) 编程要求 测试说明 代码示例 Station.java Task.jav ...

  7. VC++ 多线程实现双色球投注选号程序

    双色球与 35 选 7 的规则,不用说. 双色球选号程序: 在 VS2005 中,新建对话框应用程序:CSportLottery 对话框程序:文本ID为:IDC_EDIT1, IDC_EDIT2, I ...

  8. java使用线程求素数和1000个0~0.9随机数_求素数(多线程练习题)

    编写一个有两个线程的程序,第一个线程用来计算2-100000之间的素数的个数, 第二个线程用来计算100000-200000之间的素数的个数,最后输出结果. 代码实现: package com.thr ...

  9. c语言多进程编写龟兔赛跑程序,龟兔赛跑(多线程练习题)

    1.龟兔赛跑新规: 规则:龟兔同时起步,终点为100米,兔子跑步的能力强,乌龟跑步的能力弱(优先级的设置) 途中:        1.兔子跑到40米的时候,看不见乌龟小睡10毫秒,醒来接着跑 2.兔子 ...

  10. java学习之路 之 多线程练习题

    package com.atguigu.javase.thread;/*** 创建并启动一个线程的方法* 1) 实现接口的方式* 1) 写一个具体类, 实现Runnable接口, 并实现其中的run方 ...

最新文章

  1. 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
  2. Pycharm那些隐藏的实用小技巧,太强了
  3. 从0移植uboot (二) _uboot启动流程分析
  4. mnn c++ windows 调用实例
  5. 《Effective C#》某些地方实在是对不起Effective这个词(I)
  6. 算法复习(7)有序二叉树
  7. Kettle使用_23 Excel表格输入ODS POI
  8. 海贼王为什么画风突变_什么是突变测试?
  9. java nio的演进_Java接口的防御性API演进
  10. 【华为云技术分享】Mind Studio Docker镜像部署分享
  11. Git常用指令的使用
  12. Hibernate XXX.hbm.xml 里的class标签的 schema 属性解释
  13. coreseek4.1
  14. Arduino UNO+TB6600驱动器控制步进电机正反转
  15. 笔记——H.264/AVC与H.265/HEVC基本总结
  16. 两部手机怎样才能把数据都传过来_两个手机如何互传照片、文件 ,教你四大绝招...
  17. 计算机技能鉴定高级,职业技能鉴定计算机(高级)试题.pdf
  18. 进程间的相互通讯 C++
  19. 中国地质大学(北京)地质微生物团队招聘启事
  20. ZFS文件系统(8) -- SLOG

热门文章

  1. 720P、1080P、4K是什么意思?
  2. qt界面之comboBox控件的三种基本用法
  3. Python抖音视频去水印,并打包成exe可执行文件
  4. 用html制作ps,ps制作图片的步骤
  5. Windows10系统迁移-同一PC硬盘之间
  6. 俞敏洪:度过有意义的生命(转)
  7. Syncthing - 远程文件实时同步(P2P)工具简介、安装及使用
  8. 数据总线技术框架说明
  9. 打太极不协调的二三事
  10. 3D打印机打印中途停止且显示挤出头温度过低