Advertisement
Guest User

Многопоточность

a guest
Jan 30th, 2021
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.11 KB | None | 0 0
  1. public class Main {
  2.  
  3.     public static void main(String[] args) throws InterruptedException {
  4.         final int min = 1000;
  5.         final int max = 10000;
  6.         final int rnd = DelayTakeoff.rnd(min,max);
  7.  
  8.         Band newBand = new Band();
  9.         Passenger passenger = new Passenger("Пассажирский");
  10.         Cargo cargo = new Cargo("Грузовой");
  11.         newBand.addPlane(passenger);
  12.         newBand.addPlane(cargo);
  13.  
  14.         DelayTakeoff thread1 = new DelayTakeoff(passenger.name, passenger,newBand,5000,rnd);
  15.         DelayTakeoff thread2 = new DelayTakeoff(cargo.name, cargo,newBand,10000,rnd);
  16.  
  17.         thread1.start();
  18.         thread2.start();
  19.         thread1.join();
  20.         thread2.join();
  21.     }
  22. }
  23.  
  24. public class DelayTakeoff extends Thread {
  25.     private final Band object;
  26.     private final int delay;
  27.     private final int rndDelay;
  28.    
  29.     DelayTakeoff(String name,Plane plane, Band object, int delay, int rndDelay) {
  30.         this.setName(name);
  31.         this.object = object;
  32.         this.delay = delay;
  33.         this.rndDelay = rndDelay;
  34.     }
  35.  
  36.     public int getDelay() {
  37.         return delay;
  38.     }
  39.  
  40.     public int getRndDelay() {
  41.         return rndDelay;
  42.     }
  43.  
  44.     public static int rnd(int min, int max) {
  45.         max -=min;
  46.         return (int) (Math.random() * ++ max) + min;
  47.     }
  48.  
  49.     @Override
  50.     public void run() {
  51.         try {
  52.             System.out.println("Прогрев начался: " + getName());
  53.             Thread.sleep(getRndDelay());
  54.             System.out.println("Прогрев завершился: " + getName());
  55.         } catch (InterruptedException e) {
  56.             e.printStackTrace();
  57.         }
  58.         synchronized (object) {
  59.             try {
  60.                 System.out.println("Взлетает: " + getName());
  61.                 Thread.sleep(getDelay());
  62.                 System.out.println("Взлетел: " + getName());
  63.             } catch (InterruptedException e1) {}
  64.                 object.notify();
  65.             try {
  66.                 object.wait();
  67.                 } catch (InterruptedException e2) {}
  68.         }
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement