创建一个多线程程序模拟两台抽奖机同时抽奖的情景。抽奖池用一个数组表示(int[] jiangjin = {0,0,0,0,0,0,0,0,0,0,10, 10, 10, 10, 10, 100, 100, 100,500, 500,1000};),创建两个抽奖箱(线程),设置线程名称分别为“1号抽奖箱”,“2号抽奖箱”分别进行抽奖,每0.1秒钟抽奖一次,每个抽奖箱抽奖5次,将抽奖结果在控制台输出。如下: 二号抽奖箱开出100元奖 一号抽奖箱:空奖,谢谢参与 二号抽奖箱:空奖,谢谢参与 一号抽奖箱:空奖,谢谢参与 一号抽奖箱开出10元奖 二号抽奖箱:空奖,谢谢参与 一号抽奖箱开出10元奖 二号抽奖箱开出800元奖 一号抽奖箱:空奖,谢谢参与 二号抽奖箱开出10元奖 一号抽奖箱抽奖结束 二号抽奖箱抽奖结束 提示:每张奖劵被开出后,就不能再次被开出了,可以考虑把抽出来这张从数组删除,或者设置一个标记。,用Java 多线程方式编写
时间: 2024-03-12 21:43:14 浏览: 158
用java写的抽奖程序
4星 · 用户满意度95%
好的,以下是Java多线程实现的代码:
``` java
public class LotteryBox implements Runnable {
private int[] jiangjin = {0,0,0,0,0,0,0,0,0,0,10, 10, 10, 10, 10, 100, 100, 100, 500, 500, 1000};
private String name;
private int count;
private List<Integer> jiangjinList = new ArrayList<>();
public LotteryBox(String name) {
this.name = name;
for (int i = 0; i < jiangjin.length; i++) {
jiangjinList.add(jiangjin[i]);
}
}
@Override
public void run() {
while (count < 5) {
int index = (int) (Math.random() * jiangjinList.size());
int prize = jiangjinList.get(index);
jiangjinList.remove(index);
if (prize == 0) {
System.out.println(name + ":空奖,谢谢参与");
} else {
System.out.println(name + "开出" + prize + "元奖");
}
count++;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(name + "抽奖结束");
}
public static void main(String[] args) {
LotteryBox box1 = new LotteryBox("1号抽奖箱");
LotteryBox box2 = new LotteryBox("2号抽奖箱");
Thread thread1 = new Thread(box1);
Thread thread2 = new Thread(box2);
thread1.start();
thread2.start();
}
}
```
在这个程序中,我们首先定义了一个 `jiangjin` 数组表示奖池,然后通过 `jiangjinList` 列表来存储奖池中的奖品。每次抽奖时,我们随机从列表中选择一个奖品,然后删除这个奖品,避免重复抽奖。如果抽中的奖品为0,说明是空奖,否则就是中了一个奖。我们通过 `count` 记录每个抽奖箱已经抽了几次奖,当 `count` 达到5时,就表示抽奖结束了。最后在 `main` 方法中创建两个抽奖箱的实例,然后启动两个线程分别执行 `run` 方法。
阅读全文