[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;
}
}
}
}