A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fzc123 中级黑马   /  2016-7-27 00:28  /  659 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

7、 需求:
        (1)双元课堂基础班的学生要进入黑马就业班,必须参加点招笔试和面试,请使用多线程模拟分组的过程
        (2)定义四个线程名称分别为"第一组"、"第二组"、"第三组"、"第四组"
        (3)假设我们班有80为学生,编号为1-80,只需要按照编号分组即可,而且是随机分配,不用平均分配
        (4)开启线程,输出结果如下:
                 *         编号为 17 的学生被分到第四组
                 *         编号为 16 的学生被分到第四组
                 *         编号为 4 的学生被分到第一组


1 个回复

倒序浏览
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;
                                }
                        }
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马