andervyd

McDonald's

May 27th, 2021
1,148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.16 KB | None | 0 0
  1. //================= CookingBurger =================
  2. package example_5;
  3.  
  4. import java.util.concurrent.BrokenBarrierException;
  5. import java.util.concurrent.CyclicBarrier;
  6.  
  7. public class CookingBurger implements Runnable {
  8.     final private CyclicBarrier cb;
  9.     final private String message;
  10.     private float timeBurger;
  11.     private boolean isEnd;
  12.  
  13.     public CookingBurger(CyclicBarrier cb, String message) {
  14.         this.cb = cb;
  15.         this.message = message;
  16.         new Thread(this).start();
  17.     }
  18.  
  19.     @Override
  20.     public void run() {
  21.         long start = System.currentTimeMillis();
  22.         System.out.println(this.message);
  23.         try {
  24.             Thread.sleep(8000);
  25.             System.out.println("Приготування бургеру завершено.");
  26.             this.cb.await();
  27.         } catch (BrokenBarrierException | InterruptedException ex) {
  28.             System.out.println(ex);
  29.         }
  30.         long stop = System.currentTimeMillis();
  31.         timeBurger = ((stop - start) / 1000f);
  32.         System.out.println("Час приготування бургера: " + timeBurger + " секунд.");
  33.  
  34.         setEnd(true);
  35.     }
  36.  
  37.     public float getTimeBurger() {
  38.         return timeBurger;
  39.     }
  40.  
  41.     public boolean isEnd() {
  42.  
  43.         return isEnd;
  44.     }
  45.  
  46.     public void setEnd(boolean end) {
  47.         isEnd = end;
  48.     }
  49. }
  50.  
  51. //================== CookingCola =================
  52. package example_5;
  53.  
  54. import java.util.concurrent.BrokenBarrierException;
  55. import java.util.concurrent.CyclicBarrier;
  56.  
  57. public class CookingCola implements Runnable {
  58.     final private CyclicBarrier cb;
  59.     final private String message;
  60.     private float timeCola;
  61.     private boolean isEnd;
  62.  
  63.     public CookingCola(CyclicBarrier cb, String message) {
  64.         this.cb = cb;
  65.         this.message = message;
  66.         new Thread(this).start();
  67.     }
  68.  
  69.     @Override
  70.     public void run() {
  71.         long start = System.currentTimeMillis();
  72.         System.out.println(this.message);
  73.         try {
  74.             Thread.sleep(10000);
  75.             System.out.println("Приготування коли завершено.");
  76.             this.cb.await();
  77.         } catch (BrokenBarrierException | InterruptedException ex) {
  78.             System.out.println(ex);
  79.         }
  80.         long stop = System.currentTimeMillis();
  81.         timeCola = ((stop - start) / 1000f);
  82.         System.out.println("Час приготування коли: " + timeCola + " секунд.");
  83.  
  84.         setEnd(true);
  85.     }
  86.  
  87.     public float getTimeCola() {
  88.         return timeCola;
  89.     }
  90.  
  91.     public boolean isEnd() {
  92.         return isEnd;
  93.     }
  94.  
  95.     public void setEnd(boolean end) {
  96.         isEnd = end;
  97.     }
  98. }
  99.  
  100. //================= CookingPotatoes ================
  101. package example_5;
  102.  
  103. import java.util.concurrent.BrokenBarrierException;
  104. import java.util.concurrent.CyclicBarrier;
  105.  
  106. public class CookingPotatoes implements Runnable {
  107.     final private CyclicBarrier cb;
  108.     final private String message;
  109.     private float timeFree;
  110.     private boolean isEnd;
  111.  
  112.     public CookingPotatoes(CyclicBarrier cb, String message) {
  113.         this.cb = cb;
  114.         this.message = message;
  115.         new Thread(this).start();
  116.     }
  117.  
  118.     @Override
  119.     public void run() {
  120.         long start = System.currentTimeMillis();
  121.         System.out.println(this.message);
  122.         try {
  123.             Thread.sleep(10000);
  124.             System.out.println("Приготування картошки фрі завершено.");
  125.             this.cb.await();
  126.         } catch (BrokenBarrierException | InterruptedException ex) {
  127.             System.out.println(ex);
  128.         }
  129.         long stop = System.currentTimeMillis();
  130.         timeFree = ((stop - start) / 1000f);
  131.         System.out.println("Час приготування картошки фрі: " + timeFree + " секунд.");
  132.  
  133.         setEnd(true);
  134.     }
  135.  
  136.     public float getTimeFree() {
  137.         return timeFree;
  138.     }
  139.  
  140.     public boolean isEnd() {
  141.         return isEnd;
  142.     }
  143.  
  144.     public void setEnd(boolean end) {
  145.         isEnd = end;
  146.     }
  147. }
  148.  
  149. //================== Order ========================
  150. package example_5;
  151.  
  152. public class Order implements Runnable {
  153.  
  154.     @Override
  155.     public void run() {
  156.         System.out.println("Ваш заказ успішно виконано.");
  157.     }
  158. }
  159.  
  160. //================== McDonald's ====================
  161. package example_5;
  162.  
  163. import java.util.concurrent.CyclicBarrier;
  164.  
  165. public class McDonalds {
  166.     public static void main(String[] args) {
  167.  
  168.         CyclicBarrier cb = new CyclicBarrier(3, new Order());
  169.  
  170.         System.out.println("Початок приготування замовлення.");
  171.  
  172.         CookingBurger burger = new CookingBurger(cb, "Приготування бургеру...");
  173.         CookingCola cola = new CookingCola(cb, "Приготування коли...");
  174.         CookingPotatoes fries = new CookingPotatoes(cb, "Приготування картошки фрі...");
  175.  
  176.         while (true) {
  177.             if (burger.isEnd() && cola.isEnd() && fries.isEnd()) {
  178.                 System.out.printf("Total order time: %.2f %s",
  179.                         (burger.getTimeBurger() + cola.getTimeCola() + fries.getTimeFree()), " seconds.");
  180.                 break;
  181.             } else {
  182.                 System.out.print("");
  183.             }
  184.         }
  185.     }
  186. }/*Output:  Початок приготування замовлення.
  187.             Приготування бургеру...
  188.             Приготування коли...
  189.             Приготування картошки фрі...
  190.             Приготування бургеру завершено.
  191.             Приготування коли завершено.
  192.             Приготування картошки фрі завершено.
  193.             Ваш заказ успішно виконано.
  194.             Час приготування картошки фрі: 10.003 секунд.
  195.             Час приготування коли: 10.021 секунд.
  196.             Час приготування бургера: 10.023 секунд.
  197.             Total order time: 30.05  seconds.
  198. *///~
Advertisement
Add Comment
Please, Sign In to add comment