package com.codegym.task.task28.task2809;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Phaser;
/*
Plants vs Zombies
*/
public class Solution {
public static void main(String[] args) throws InterruptedException {
List<Character> characters = new ArrayList<>();
characters.add(new Plant());
characters.add(new Plant());
characters.add(new Zombie());
characters.add(new Zombie());
characters.add(new Zombie());
start(characters);
}
private static boolean isEveryoneReady = false;
private static void start(List<Character> characters) throws InterruptedException {
final Phaser phaser = new Phaser(1 + characters.size());
phaser.arriveAndDeregister();
for (final Character character : characters) {
final String member = character.toString();
System.out.println(member + " joined the game");
new Thread() {
@Override
public void run() {
System.out.println(member + " is preparing to play");
phaser.arriveAndAwaitAdvance();
if (!isEveryoneReady) {
phaser.arriveAndDeregister();
isEveryoneReady = true;
System.out.println("The game has begun!");
}
character.run();
}
}.start();
}
}
}
Last two condition not met
Resolved
Comments (1)
- Popular
- New
- Old
You must be signed in to leave a comment
Wei Cui
8 April 2020, 01:56
add phaser.arriveAndDeregister(); between line 44 and line 45
+2