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多线程练习二模拟开场仪式进场的更多相关文章

  1. Java多线程(二)关于多线程的CPU密集型和IO密集型这件事

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

  2. 简述Java多线程(二)

    Java多线程(二) 线程优先级 Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行. 优先级高的不一定先执行,大多数情况是这样的. 优 ...

  3. Java多线程(二) —— 线程安全、线程同步、线程间通信(含面试题集)

    一.线程安全 多个线程在执行同一段代码的时候,每次的执行结果和单线程执行的结果都是一样的,不存在执行结果的二义性,就可以称作是线程安全的. 讲到线程安全问题,其实是指多线程环境下对共享资源的访问可能会 ...

  4. java多线程系列(二)

    对象变量的并发访问 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我 ...

  5. java多线程系列(二)---对象变量并发访问

    对象变量的并发访问 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我 ...

  6. (Java多线程系列二)线程间同步

    Java多线程间同步 1.什么是线程安全 通过一个案例了解线程安全 案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果. 先来看一个线程不安全的例子 class Sell ...

  7. Java总结篇系列:Java多线程(二)

    本文承接上一篇文章<Java总结篇系列:Java多线程(一)>. 四.Java多线程的阻塞状态与线程控制 上文已经提到Java阻塞的几种具体类型.下面分别看下引起Java线程阻塞的主要方法 ...

  8. java多线程基础(二)--java多线程的基本使用

    java多线程的基本使用 在java中使用多线程,是通过继承Thread这个类或者实现Runnable这个接口或者实现Callable接口来完成多线程的. 下面是很简单的例子代码: package c ...

  9. java多线程解读二(内存篇)

    线程的内存结构图 一.主内存与工作内存 1.Java内存模型的主要目标是定义程序中各个变量的访问规则.此处的变量与Java编程时所说的变量不一样,指包括了实例字段.静态字段和构成数组对象的元素,但是不 ...

随机推荐

  1. 2017 Fzu校赛 [Cloned]

    A - Salty Fish 海边躺着一排咸鱼,一些有梦想的咸鱼成功翻身(然而没有什么卵用),一些则是继续当咸鱼.一个善良的渔夫想要帮这些咸鱼翻身,但是渔夫比较懒,所以只会从某只咸鱼开始,往一个方向, ...

  2. vector详解

    /*vector向量容器*/ //用数组方式访问vector元素 #include<iostream> #include<vector> #include<cstdio& ...

  3. 洛谷 P2216 [HAOI2007]理想的正方形

    P2216 [HAOI2007]理想的正方形 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一 ...

  4. (三)siege的使用

    学习: ELK——http://dockone.io/article/3655 docker——http://www.testclass.net/docker/ Android Monkey压力测试— ...

  5. HE学业水平考试游记 By cellur925

    \(I'm\) \(back\). Day -2 今天高二全体学生开始了愉悦的长达两天半的自习2333. 第一天刚了最不会的地理必修一.以前没发现,其实真的挺有趣的233. 于是用了一天学习了一年的地 ...

  6. java CDI

    Scope声明周期 http://www.cnblogs.com/yjmyzz/p/javaee-cdi-bean-scope.html

  7. 2016 CCPC-Final

    A.The Third Cup is Free #include <bits/stdc++.h> using namespace std; typedef long long ll; in ...

  8. 转 SecureCRT 遇到一个致命的错误且必须关闭——解决

    http://blog.csdn.net/lisheng19870305/article/details/45537759 问题描述: 1.以前安装过SecureCRT,现在出现问题,手工卸载不完全, ...

  9. Function.prototype.apply.call

    我们先从一道简单的题目开始,前几天在git上看到的: 定义log方法,它可以代理console.log的方法.log(1,2,3)  =>  1 2 3 通常,你的答案会是这样的: functi ...

  10. SpringCloud 分布式配置中心

    SpringCloud 分布式配置中心 服务端 创建工程并完善结构 国际惯例,把maven工程创建完善 pom.xml <?xml version="1.0" encodin ...