黑马程序员技术交流社区
标题:
多线程题代码实现
[打印本页]
作者:
fzc123
时间:
2016-7-27 00:28
标题:
多线程题代码实现
7、 需求:
(1)双元课堂基础班的学生要进入黑马就业班,必须参加点招笔试和面试,请使用多线程模拟分组的过程
(2)定义四个线程名称分别为"第一组"、"第二组"、"第三组"、"第四组"
(3)假设我们班有80为学生,编号为1-80,只需要按照编号分组即可,而且是随机分配,不用平均分配
(4)开启线程,输出结果如下:
* 编号为 17 的学生被分到第四组
* 编号为 16 的学生被分到第四组
* 编号为 4 的学生被分到第一组
作者:
javaee王虎
时间:
2016-7-27 00:53
public static void main(String[] args) {
Demo_2Runnable d = new Demo_2Runnable();
Thread t1 = new Thread(d, "第一组");
Thread t2 = new Thread(d, "第二组");
Thread t3 = new Thread(d, "第三组");
Thread t4 = new Thread(d, "第四组");
t1.start();
t2.start();
t3.start();
t4.start();
}
public class Demo_2Runnable implements Runnable {
private Object object = new Object();
private int number = 80;
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
synchronized (object) {
if (number > 0) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (number == 4) {
System.out.println("编号为4的学生被分到第一组");
number--;
} else if (number == 16) {
System.out.println("编号为16的学生被分到第四组");
number--;
} else if (number == 17) {
System.out.println("编号为17的学生被分到第四组");
number--;
} else {
System.out.println("编号为" + number-- + "的学生被分在"
+ Thread.currentThread().getName());
}
} else {
break;
}
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2