黑马程序员技术交流社区

标题: 多线程题代码实现 [打印本页]

作者: 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