生成50个红包(金额是随机的,范围在1-10元之间)
创建5个线程代表5个人,然后让这5个人去抢这50个红包,每次抢红包需要300ms的时间,
在控制台打印出(xxx抢了xxx元)(不限定每人抢的次数并且抢到红包后还可以接着抢,每次生成一个红包).
import java.util.Random;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
//启动五个线程
new pot("1").start();
new pot("2").start();
new pot("3").start();
new pot("4").start();
new pot("5").start();
}
}
class pot extends Thread {//继承类
private static int hongbao=1;//静态修饰,因为数据要共享
Random r= new Random();//产生随机数
public pot(String name){//有参构造
super(name);
}
public void run(){//
while(true){
synchronized (pot.class) {//
if(hongbao==51){
break;
}
try {
Thread.sleep(300);//休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getName()+"抢到了第"+hongbao+"个红包,"+"金额为"+(r.nextInt(10)+1));
hongbao++;
}
}
}
}
|
|