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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 浅色寂语66 中级黑马   /  2016-8-9 00:04  /  478 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

3 个回复

倒序浏览
package com.heima.luntanplay;

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

class Student extends Thread {
        private static int sum = 80;
        private int count = 0;
       
        public Student(String name) {
                super(name);
               
        }

        public void run() {
                while(true) {
                        synchronized (Student.class) {
                                if(sum <= 0){
                                        break;
                                }
                                try {
                                        this.sleep(100);
                                } catch (InterruptedException e) {
                                       
                                        e.printStackTrace();
                                }
                               
                                System.out.println("编号为" + sum-- + "的学生被分到" + getName());
                                count++;
                        }
                }
                System.out.println(getName() + "中共有" + count + "个人");
        }
}
回复 使用道具 举报
package com.heima.luntan;

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

class Student extends Thread {
        private static int sum = 80;
        private int count = 0;
       
        public Student(String name) {
                super(name);
               
        }

        public void run() {
                while(true) {
                        synchronized (Student.class) {
                                if(sum <= 0){
                                        break;
                                }
                                try {
                                        this.sleep(100);
                                } catch (InterruptedException e) {
                                       
                                        e.printStackTrace();
                                }
                               
                                System.out.println("编号为" + sum-- + "的学生被分到" + getName());
                                count++;
                        }
                }
                System.out.println(getName() + "中共有" + count + "个人");
        }
}
回复 使用道具 举报
[Java] 纯文本查看 复制代码
package com.thread;

public class Test {
	
	public static void main(String[] args) {
		
		Demo d1 = new Demo();
		Thread t1 = new Thread(d1,"第一组");
		Thread t2 = new Thread(d1,"第二组");	
		Thread t3 = new Thread(d1,"第三组");	
		Thread t4 = new Thread(d1,"第四组");	
		
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}

//实现Runnable接口
class Demo implements Runnable{
	
	private int num = 80;//学生人数,共享资源
	
	@Override
	public void run() {
		
		String groupName = Thread.currentThread().getName();
		
		while(true){
			synchronized ("") {	
				if(num > 0){
					try {
						Thread.sleep(100);
						System.out.println("编号为"+ num + "的学生被分到了" + groupName);	
						num--;
					} catch (InterruptedException e) {
						e.printStackTrace();
					}							
				}
			}
		}
	}	
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马