* 有100份礼物,小明,小红两个人同时发送,当剩下礼品小于10份的时候则不再送出,利用多线程模拟该过程并将线程的名称
* 打印出来。并最后在控制台分别打印小红,小明各自送出多少份礼物
public class Test {
public static void main(String[] args) throws Exception {
//创建一个礼物集合
List<String> gifts = new ArrayList<>();
//定义一些礼物的名字
String[] names = {"玫瑰花","零食","UFC腰带","毛绒玩具","篮球","钢笔"};
Random r = new Random();
//随机定义100个礼物,带上编号
for (int i = 1; i <= 100; i++) {
gifts.add(names[r.nextInt(names.length)] + i);
}
//创建小红,小明线程
ThreadT xm = new ThreadT(gifts,"小明");
xm.start();
ThreadT xh = new ThreadT(gifts,"小红");
xh.start();
xm.join();
xh.join();
System.out.println("--小明送出了" + xm.getCount() + "件礼物--");
System.out.println("--小红送出了" + xh.getCount() + "件礼物--");
}
}
public class ThreadT extends Thread{
private final List<String> gifts;
private int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public ThreadT(List<String> gifts,String name) {
super(name);
this.gifts = gifts;
}
@Override
public void run() {
String threadName = Thread.currentThread().getName();
Random r = new Random();
while(true) {
synchronized (this) {
if (gifts.size() < 10) {
break;
}
String giftName = gifts.remove(r.nextInt(gifts.size()));
System.out.println(threadName + "送出" + giftName);
count++;
}
}
}
}