Advertisement
jaVer404

level16.lesson05.task02

Sep 8th, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.08 KB | None | 0 0
  1. package com.javarush.test.level16.lesson05.task02;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. /* Horse Racing
  7. Разберись, что делает программа.
  8. Реализуй метод calculateHorsesFinished. Он должен:
  9. 1. Посчитать количество финишировавших лошадей и возвратить его. Используй метод isFinished().
  10. 2. Если лошадь еще не пришла к финишу (!isFinished()), то:
  11. 2.1. Вывести в консоль "Waiting for " + horse.getName().
  12. 2.2. Подождать, пока она завершит гонку.
  13.      Подумай, какой метод нужно использовать для этого.
  14. */
  15.  
  16. public class Solution {
  17.     public static int countHorses = 10;
  18. /*-------------------------------------------------------------------*/
  19.     public static void main(String[] args) throws InterruptedException {
  20.         List<Horse> horses = prepareHorsesAndStart();
  21.         while (calculateHorsesFinished(horses) != countHorses) {
  22.         }
  23.     }
  24. /*-------------------------------------------------------------------*/
  25.     public static int calculateHorsesFinished(List<Horse> horses) throws InterruptedException {
  26.         int countFinished = 0;
  27.         //add your implementation here - добавь свою реалзацию тут
  28.         for (Horse horse : horses) {
  29.             if (horse.isFinished() == true) {
  30.                 countFinished++;
  31.             }
  32.             else {
  33.                 System.out.println("Waiting for " + horse.getName());
  34.             }
  35.             horse.join();
  36.         }
  37.         return countFinished;
  38.  
  39.     }
  40. /*-------------------------------------------------------------------*/
  41.     public static class Horse extends Thread {
  42.  
  43.         public Horse(String name) {
  44.             super(name);
  45.         }
  46.  
  47.         private boolean isFinished;
  48.  
  49.         public boolean isFinished() {
  50.             return isFinished;
  51.         }
  52. /*-----------------------------------------------------------*/
  53.         public void run() {
  54.             String s = "";
  55.             for (int i = 0; i < 1001; i++) {   //delay
  56.                 s += new String("" + i);
  57.                 if (i == 1000) {
  58.                     s = " is finished!";
  59.                     System.out.println(getName() + s);
  60.                     isFinished = true;
  61.                 }
  62.             }
  63.         }
  64. /*-------------------------------------------------------------------*/
  65.     }
  66. /*-------------------------------------------------------------------*/
  67.     public static List<Horse> prepareHorsesAndStart() {
  68.         List<Horse> horses = new ArrayList<Horse>(countHorses);
  69.         String number;
  70.         for (int i = 1; i < countHorses + 1; i++) {
  71.             number = i < 10 ? ("0" + i) : "" + i;
  72.             horses.add(new Horse("Horse_" + number));
  73.         }
  74.  
  75.         for (int i = 0; i < countHorses; i++) {
  76.             horses.get(i).start();
  77.         }
  78.         return horses;
  79.     }
  80. /*-------------------------------------------------------------------*/
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement