多线程练习题(双色球)
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();
// }}}}
}
多线程练习题(双色球)相关推荐
- java 多线程 选择题_Java多线程之三道多线程练习题
三道多线程练习题 接下来,我们来做三道题: 第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个 ...
- python 选择题 多线程_python多线程练习题
python多线程练习题 多线程练习题目,涉及知识点较多,属于很好的练习题. 题目要求 通过多线程实现类似linux中的>>功能,也就是将日志记录到指定的文件中. 题目分析 基本为main ...
- 【Java】集合+I/O流+多线程の练习题+面试题
一. Collection Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集 ...
- 二十六、多线程练习题
第1关:顺序输出 任务描述 本关任务:利用多线程相关知识控制三个线程,依照先后顺序顺序输出. 相关知识 (略) 编程要求 请仔细阅读右侧代码,在 Begin-End 区域内进行代码补充,使线程依照先后 ...
- Java高级特性 - 多线程练习题
第1关:顺序输出 任务描述 本关任务:利用多线程相关知识控制三个线程,依照先后顺序顺序输出. 相关知识(略) 编程要求 请仔细阅读右侧代码,在 Begin-End 区域内进行代码补充,使线程依照先后顺 ...
- 头歌Educoder——Java高级特性 - 多线程练习题
文章目录 第1关:顺序输出 任务描述 相关知识(略) 编程要求 测试说明 代码示例 第2关:售票窗口 任务描述 相关知识(略) 编程要求 测试说明 代码示例 Station.java Task.jav ...
- VC++ 多线程实现双色球投注选号程序
双色球与 35 选 7 的规则,不用说. 双色球选号程序: 在 VS2005 中,新建对话框应用程序:CSportLottery 对话框程序:文本ID为:IDC_EDIT1, IDC_EDIT2, I ...
- java使用线程求素数和1000个0~0.9随机数_求素数(多线程练习题)
编写一个有两个线程的程序,第一个线程用来计算2-100000之间的素数的个数, 第二个线程用来计算100000-200000之间的素数的个数,最后输出结果. 代码实现: package com.thr ...
- c语言多进程编写龟兔赛跑程序,龟兔赛跑(多线程练习题)
1.龟兔赛跑新规: 规则:龟兔同时起步,终点为100米,兔子跑步的能力强,乌龟跑步的能力弱(优先级的设置) 途中: 1.兔子跑到40米的时候,看不见乌龟小睡10毫秒,醒来接着跑 2.兔子 ...
- java学习之路 之 多线程练习题
package com.atguigu.javase.thread;/*** 创建并启动一个线程的方法* 1) 实现接口的方式* 1) 写一个具体类, 实现Runnable接口, 并实现其中的run方 ...
最新文章
- 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
- Pycharm那些隐藏的实用小技巧,太强了
- 从0移植uboot (二) _uboot启动流程分析
- mnn c++ windows 调用实例
- 《Effective C#》某些地方实在是对不起Effective这个词(I)
- 算法复习(7)有序二叉树
- Kettle使用_23 Excel表格输入ODS POI
- 海贼王为什么画风突变_什么是突变测试?
- java nio的演进_Java接口的防御性API演进
- 【华为云技术分享】Mind Studio Docker镜像部署分享
- Git常用指令的使用
- Hibernate XXX.hbm.xml 里的class标签的 schema 属性解释
- coreseek4.1
- Arduino UNO+TB6600驱动器控制步进电机正反转
- 笔记——H.264/AVC与H.265/HEVC基本总结
- 两部手机怎样才能把数据都传过来_两个手机如何互传照片、文件 ,教你四大绝招...
- 计算机技能鉴定高级,职业技能鉴定计算机(高级)试题.pdf
- 进程间的相互通讯 C++
- 中国地质大学(北京)地质微生物团队招聘启事
- ZFS文件系统(8) -- SLOG