java线程实现葫芦娃打妖怪
时间: 2023-07-07 11:24:31 浏览: 169
好的,我可以为您提供一个简单的Java线程实现葫芦娃打妖怪的示例。
首先,我们需要创建两个类:`Huluwa` 和 `Monster` ,它们分别表示葫芦娃和妖怪。这两个类都有一个`fight`方法,分别表示打斗。
```java
public class Huluwa {
public void fight() {
System.out.println("葫芦娃打妖怪!");
}
}
public class Monster {
public void fight() {
System.out.println("妖怪打葫芦娃!");
}
}
```
然后,我们创建一个 `BattleField`类,表示战场。在 `BattleField` 类中,我们可以创建多个葫芦娃和妖怪对象,并将它们放在一个数组中。然后,我们创建两个线程分别代表葫芦娃和妖怪,让它们不断地交替执行 `fight` 方法。
```java
public class BattleField {
public static void main(String[] args) {
Huluwa[] huluwas = new Huluwa[3];
Monster[] monsters = new Monster[3];
for (int i = 0; i < huluwas.length; i++) {
huluwas[i] = new Huluwa();
monsters[i] = new Monster();
}
Thread huluwaThread = new Thread(() -> {
while (true) {
for (Huluwa huluwa : huluwas) {
huluwa.fight();
try {
Thread.sleep(1000); // 线程睡眠 1s
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Thread monsterThread = new Thread(() -> {
while (true) {
for (Monster monster : monsters) {
monster.fight();
try {
Thread.sleep(1000); // 线程睡眠 1s
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
huluwaThread.start();
monsterThread.start();
}
}
```
在上面的代码中,我们使用了 Lambda 表达式来创建线程。在 `Huluwa` 线程中,我们使用一个 `for` 循环遍历所有的葫芦娃,然后依次调用它们的 `fight` 方法,并在每次调用后使线程睡眠 1 秒钟。在 `Monster` 线程中,我们使用同样的方式遍历所有的妖怪,并依次调用它们的 `fight` 方法。
最后,我们启动这两个线程,并让它们不断地交替执行 `fight` 方法,从而模拟葫芦娃和妖怪的战斗过程。
需要注意的是,上面的代码中只是一个简单的示例,它并没有考虑到多线程可能出现的问题,比如数据竞争、死锁等等,实际应用中还需要更加仔细地设计和实现。
阅读全文