Advertisement
jaVer404

level16.lesson07.task05

Sep 10th, 2015
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.66 KB | None | 0 0
  1. package com.javarush.test.level16.lesson07.task05;
  2.  
  3. /* Аэропорт
  4. 1. Разберись, что делает программа.
  5. 2. Исправь метод takingOff(взлет) - сейчас он работает оооочень долго. Взлет должен занимать 100 миллисекунд.
  6. 3. Реализуй метод waiting по аналогии с методом takingOff. Время ожидания не должно превышать время взлета.
  7. */
  8. public class Solution {
  9.     public static volatile Runway RUNWAY = new Runway();   //1 взлетная полоса
  10.  
  11.     public static void main(String[] args) throws InterruptedException {
  12.         Plane plane1 = new Plane("Самолет #1");
  13.         Plane plane2 = new Plane("Самолет #2");
  14.         Plane plane3 = new Plane("Самолет #3");
  15.     }
  16.  
  17.     public static class Plane extends Thread {
  18.         public Plane(String name) {
  19.             super(name);
  20.             start();
  21.         }
  22.  
  23.         public void run() {
  24.             boolean  isAlreadyTakenOff = false;//уде не взлетел
  25.             while (!isAlreadyTakenOff) {
  26.                 if (RUNWAY.getTakingOffPlane() == null) {    //если взлетная полоса свободна
  27.                     RUNWAY.setTakingOffPlane(this);
  28.                     System.out.println(getName() + " взлетает");
  29.                     takingOff();//взлетает
  30.                     System.out.println(getName() + " уже в небе");
  31.                     isAlreadyTakenOff = true;
  32.                     RUNWAY.setTakingOffPlane(null);
  33.                 } else if (!this.equals(RUNWAY.getTakingOffPlane())) {  //если взлетная полоса занята самолетом
  34.                     System.out.println(getName() + " ожидает");
  35.                     waiting(); //ожидает
  36.                 }
  37.             }
  38.         }
  39.     }
  40.  
  41.     private static void waiting() {
  42.         //add your code here - добавь код тут
  43.         try
  44.         {
  45.             Thread.sleep(100);
  46.         } catch (InterruptedException e) {}
  47.  
  48.  
  49.     }
  50.  
  51.     private static void takingOff() {
  52.         //fix this method - исправь этот метод
  53.         try {
  54.             Thread.sleep(99);
  55.         } catch (InterruptedException e) {
  56.         }
  57.     }
  58.  
  59.     public static class Runway { //взлетная полоса
  60.         private Thread t;
  61.  
  62.         public Thread getTakingOffPlane() {
  63.             return t;
  64.         }
  65.  
  66.         public void setTakingOffPlane(Thread t) {
  67.             synchronized (this) {
  68.                 this.t = t;
  69.             }
  70.         }
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement