2018.4.17 java多线程练习二模拟开场仪式进场
2、某公司组织年会,会议入场时有两个入口,在入场时每位员工都能获取一张双色球彩票,假设公司有100个员工,利用多线程模拟年会入场过程,
并分别统计每个入口入场的人数,以及每个员工拿到的彩票的号码。线程运行后打印格式如下:
编号为: 2 的员工 从后门 入场! 拿到的双色球彩票号码是: [17, 24, 29, 30, 31, 32, 07]
编号为: 1 的员工 从后门 入场! 拿到的双色球彩票号码是: [06, 11, 14, 22, 29, 32, 15]
//.....
从后门入场的员工总共: 13 位员工
从前门入场的员工总共: 87 位员工
package com.lanqiao.demo9;
/**
* 在测试类中主要是实例化子进程 创建进程
* 启动进程 不要调用run'方法 start
*
* @author qichunlin
*
*/
public class Test {
public static void main(String[] args) {
// 实例化子进程
myThread mt = new myThread();
// 创建进程
Thread t1 = new Thread(mt, "前门");
Thread t2 = new Thread(mt, "后门");
// 启动进程
t1.start();
t2.start();
}
}
package com.lanqiao.demo9;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 进场类
* @author qichunlin
*
*/
public class Entering implements Runnable {
// 前门人数
private int frontNum = 0;
// 后门人数
private int backNum = 0;
// 总人数
private int person = 100;
@Override
public void run() {
// 线程体
// 1、统计人数
while (true) {
synchronized (this) {
try {
Thread.sleep(10);
// 获取线程名称
String threadName = Thread.currentThread().getName();
// 1-1:总人数<0,退出循环
if (person < 0) {
return;
}
// 1-2:总人数>0,
if (person > 0) {
// 统计前门人数
if ("前门".equals(threadName)) {
System.out.println("编号为: "+(100-person+1)+" 的员工 从前门 入场!拿到的双色球彩票号码是: "+this.show());
frontNum++;
}
// 统计后门人数
if ("后门".equals(threadName)) {
System.out.println("编号为: "+(100-person+1)+" 的员工 从后门 入场!拿到的双色球彩票号码是: "+this.show());
backNum++;
}
person--;
}
// 1-3:总人数==0,显示前门人数及后门人数
if (person == 0) {
System.out.println("前门人数:"+frontNum);
System.out.println("后门人数:"+backNum);
person--;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
// 2、显示双色球结果
public List<Integer> show() {
//7 创建集合
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i <7; i++) {
Random r = new Random();
int num = r.nextInt(33)+1;
list.add(num);
}
return list;
}
}
2018.4.17 java多线程练习二模拟开场仪式进场的更多相关文章
- Java多线程(二)关于多线程的CPU密集型和IO密集型这件事
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- 简述Java多线程(二)
Java多线程(二) 线程优先级 Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行. 优先级高的不一定先执行,大多数情况是这样的. 优 ...
- Java多线程(二) —— 线程安全、线程同步、线程间通信(含面试题集)
一.线程安全 多个线程在执行同一段代码的时候,每次的执行结果和单线程执行的结果都是一样的,不存在执行结果的二义性,就可以称作是线程安全的. 讲到线程安全问题,其实是指多线程环境下对共享资源的访问可能会 ...
- java多线程系列(二)
对象变量的并发访问 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我 ...
- java多线程系列(二)---对象变量并发访问
对象变量的并发访问 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我 ...
- (Java多线程系列二)线程间同步
Java多线程间同步 1.什么是线程安全 通过一个案例了解线程安全 案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果. 先来看一个线程不安全的例子 class Sell ...
- Java总结篇系列:Java多线程(二)
本文承接上一篇文章<Java总结篇系列:Java多线程(一)>. 四.Java多线程的阻塞状态与线程控制 上文已经提到Java阻塞的几种具体类型.下面分别看下引起Java线程阻塞的主要方法 ...
- java多线程基础(二)--java多线程的基本使用
java多线程的基本使用 在java中使用多线程,是通过继承Thread这个类或者实现Runnable这个接口或者实现Callable接口来完成多线程的. 下面是很简单的例子代码: package c ...
- java多线程解读二(内存篇)
线程的内存结构图 一.主内存与工作内存 1.Java内存模型的主要目标是定义程序中各个变量的访问规则.此处的变量与Java编程时所说的变量不一样,指包括了实例字段.静态字段和构成数组对象的元素,但是不 ...
随机推荐
- UOJ #32. 【UR #2】跳蚤公路【Floydbellman-ford】
首先看这个范围很夸张但是其实有限制的也就在1e18*n范围里(走完一圈的边权),然后限制一定是有负环 用Floyd传递闭包,然后设f[i][j][k]为从1走了i步到j并且有k个x的最短路,用B-F处 ...
- Canesten 项目申请ICP备案过程中遇到的问题及知识点扩充
遇到的问题:Canesten备案主体是Bayer *** Ltd., Shanghai Branch, 而提供的IP是 Bayer (China)limited,违背了电信要求的三一致原则,即备案主体 ...
- nodejs 从helloworld到高质量的后台服务server的一点思考
---恢复内容开始--- 新公司用的nodejs作为app和网站的后台服务server,所以最近对nodejs一直在学习,加上之前简单的学习了一点,看了两天后台接口源码,所以就直接上手干活了,下面是我 ...
- 一、接口测试——HTTPRunner二次开发之参数化一
目前项目中在使用开源框架HTTPRunner,时间使用过程中会用到生成随机信息的方法,如生成随机姓名.随机手机号.身份证号.姓名.地址等.以下对二次开发的过程进行简要描述. 一.需求 1.需要测试的接 ...
- CF1141F Same Sum Blocks(easy/hard)
传送门easy 传送门hard 切水题的感觉真好 看到数据范围这么小,所以暴力枚举所有的可能,然后用map+vector存下每种值的区间,然后贪心去选 代码: #include<cstdio&g ...
- c# 可选参数与命名实参
c#4.0: 链接:C# 可选参数 命名参数
- Codeforces Round #563 (Div. 2) C. Ehab and a Special Coloring Problem
链接:https://codeforces.com/contest/1174/problem/C 题意: You're given an integer nn. For every integer i ...
- Codeforces 1152E(欧拉路径)
看样例然后发现只要求一个一笔画即可,用板子. #include <cstdio> #include <cstring> #include <iostream> #i ...
- HttpServletRequest 和 HttpServletResponse
Servlet配置方式 全路径匹配 以 / 开始 /a /aa/bb localhost:8080/项目名称/aa/bb 路径匹配 , 前半段匹配 以 / 开始 , 但是以 * 结束 /a/* /* ...
- Prime Count 求大区间素数个数
http://acm.gdufe.edu.cn/Problem/read/id/1333 https://www.zhihu.com/question/29580448/answer/44874605