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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lvshen9 中级黑马   /  2017-3-9 16:21  /  2005 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[Java] 纯文本查看 复制代码
package myexam.test24;

import java.util.Random;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;


/*
 * 问题2.模拟抢红包过程,生成5个红包(金额是随机生成的,范围在1-
 * 10元之间)创建5个线程代表5个人,然后让这5个人去抢这5个红包,
 * 每次抢红包需要300ms的时间,在控制台打印出 (xxx抢了xxx元
 * (不限定每人抢的次数并且抢到红包后还可以接着抢,每次生成一个红包
 *  )(10分)
 * 
 * 
 * 
 */
public class MyTest2 {

	public static void main(String[] args) {
		GetMoney getMoney=new GetMoney();
		Thread t1=new Thread(getMoney,"用户a");
		Thread t2=new Thread(getMoney,"用户b");
		Thread t3=new Thread(getMoney,"用户c");
		Thread t4=new Thread(getMoney,"用户d");
		Thread t5=new Thread(getMoney,"用户e");
		
		t1.start();
		t2.start();
		t3.start();
		t4.start();
		t5.start();
		
	}
	
}
class GetMoney implements Runnable{
	
	Random r=new Random();
	int num=0;
	@Override
	public void run() {
		
			int money=r.nextInt(10-1+1)+1;
			while(true){
				synchronized(this){
					if(num==5)
				try {
					Thread.sleep(300);
				} catch (InterruptedException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"抢了"+money+"元");
				num++;
					break;

			}
		}
	}
	
}

1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马