package com.javarush.task.task16.task1607;
import java.util.ArrayList;
import java.util.List;
/*
Horse Racing
*/
public class Solution {
public static int countHorses = 10;
public static void main(String[] args) throws InterruptedException {
List<Horse> horses = prepareHorsesAndStart();
while (calculateHorsesFinished(horses) != countHorses) {
}
}
public static int calculateHorsesFinished(List<Horse> horses) throws InterruptedException {
int countFinished = 0;
for (int i=0;i<countHorses;i++){
if (horses.get(i).isFinished()) countFinished++;
else {
System.out.println("Waiting for "+horses.get(i).getName());
horses.get(i).join();
}
}
return countFinished;
}
public static List<Horse> prepareHorsesAndStart() {
List<Horse> horses = new ArrayList<Horse>(countHorses);
String number;
for (int i = 1; i < countHorses + 1; i++) {
number = i < 10 ? ("0" + i) : "" + i;
horses.add(new Horse("Horse_" + number));
}
for (int i = 0; i < countHorses; i++) {
horses.get(i).start();
}
return horses;
}
public static class Horse extends Thread {
private boolean isFinished;
public Horse(String name) {
super(name);
}
public boolean isFinished() {
return isFinished;
}
public void run() {
String s = "";
for (int i = 0; i < 1001; i++) { //delay
s += "" + i;
if (i == 1000) {
s = " has finished the race!";
System.out.println(getName() + s);
isFinished = true;
}
}
}
}
}
Андрей Щедрин
18 уровень
*&
Архивный
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Артем Divertitto Senior Android-разработчи в United Tech Master
10 сентября 2018, 12:57
horses.size()
0
Андрей Щедрин
10 сентября 2018, 20:58
countHorses = 10 and horses.size = 10;
в чем разница?
0
Артем Divertitto Senior Android-разработчи в United Tech Master
11 сентября 2018, 08:24
В метод передается конкретный список, вот с ним и работать нужно
0