Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //================= CookingBurger =================
- package example_5;
- import java.util.concurrent.BrokenBarrierException;
- import java.util.concurrent.CyclicBarrier;
- public class CookingBurger implements Runnable {
- final private CyclicBarrier cb;
- final private String message;
- private float timeBurger;
- private boolean isEnd;
- public CookingBurger(CyclicBarrier cb, String message) {
- this.cb = cb;
- this.message = message;
- new Thread(this).start();
- }
- @Override
- public void run() {
- long start = System.currentTimeMillis();
- System.out.println(this.message);
- try {
- Thread.sleep(8000);
- System.out.println("Приготування бургеру завершено.");
- this.cb.await();
- } catch (BrokenBarrierException | InterruptedException ex) {
- System.out.println(ex);
- }
- long stop = System.currentTimeMillis();
- timeBurger = ((stop - start) / 1000f);
- System.out.println("Час приготування бургера: " + timeBurger + " секунд.");
- setEnd(true);
- }
- public float getTimeBurger() {
- return timeBurger;
- }
- public boolean isEnd() {
- return isEnd;
- }
- public void setEnd(boolean end) {
- isEnd = end;
- }
- }
- //================== CookingCola =================
- package example_5;
- import java.util.concurrent.BrokenBarrierException;
- import java.util.concurrent.CyclicBarrier;
- public class CookingCola implements Runnable {
- final private CyclicBarrier cb;
- final private String message;
- private float timeCola;
- private boolean isEnd;
- public CookingCola(CyclicBarrier cb, String message) {
- this.cb = cb;
- this.message = message;
- new Thread(this).start();
- }
- @Override
- public void run() {
- long start = System.currentTimeMillis();
- System.out.println(this.message);
- try {
- Thread.sleep(10000);
- System.out.println("Приготування коли завершено.");
- this.cb.await();
- } catch (BrokenBarrierException | InterruptedException ex) {
- System.out.println(ex);
- }
- long stop = System.currentTimeMillis();
- timeCola = ((stop - start) / 1000f);
- System.out.println("Час приготування коли: " + timeCola + " секунд.");
- setEnd(true);
- }
- public float getTimeCola() {
- return timeCola;
- }
- public boolean isEnd() {
- return isEnd;
- }
- public void setEnd(boolean end) {
- isEnd = end;
- }
- }
- //================= CookingPotatoes ================
- package example_5;
- import java.util.concurrent.BrokenBarrierException;
- import java.util.concurrent.CyclicBarrier;
- public class CookingPotatoes implements Runnable {
- final private CyclicBarrier cb;
- final private String message;
- private float timeFree;
- private boolean isEnd;
- public CookingPotatoes(CyclicBarrier cb, String message) {
- this.cb = cb;
- this.message = message;
- new Thread(this).start();
- }
- @Override
- public void run() {
- long start = System.currentTimeMillis();
- System.out.println(this.message);
- try {
- Thread.sleep(10000);
- System.out.println("Приготування картошки фрі завершено.");
- this.cb.await();
- } catch (BrokenBarrierException | InterruptedException ex) {
- System.out.println(ex);
- }
- long stop = System.currentTimeMillis();
- timeFree = ((stop - start) / 1000f);
- System.out.println("Час приготування картошки фрі: " + timeFree + " секунд.");
- setEnd(true);
- }
- public float getTimeFree() {
- return timeFree;
- }
- public boolean isEnd() {
- return isEnd;
- }
- public void setEnd(boolean end) {
- isEnd = end;
- }
- }
- //================== Order ========================
- package example_5;
- public class Order implements Runnable {
- @Override
- public void run() {
- System.out.println("Ваш заказ успішно виконано.");
- }
- }
- //================== McDonald's ====================
- package example_5;
- import java.util.concurrent.CyclicBarrier;
- public class McDonalds {
- public static void main(String[] args) {
- CyclicBarrier cb = new CyclicBarrier(3, new Order());
- System.out.println("Початок приготування замовлення.");
- CookingBurger burger = new CookingBurger(cb, "Приготування бургеру...");
- CookingCola cola = new CookingCola(cb, "Приготування коли...");
- CookingPotatoes fries = new CookingPotatoes(cb, "Приготування картошки фрі...");
- while (true) {
- if (burger.isEnd() && cola.isEnd() && fries.isEnd()) {
- System.out.printf("Total order time: %.2f %s",
- (burger.getTimeBurger() + cola.getTimeCola() + fries.getTimeFree()), " seconds.");
- break;
- } else {
- System.out.print("");
- }
- }
- }
- }/*Output: Початок приготування замовлення.
- Приготування бургеру...
- Приготування коли...
- Приготування картошки фрі...
- Приготування бургеру завершено.
- Приготування коли завершено.
- Приготування картошки фрі завершено.
- Ваш заказ успішно виконано.
- Час приготування картошки фрі: 10.003 секунд.
- Час приготування коли: 10.021 секунд.
- Час приготування бургера: 10.023 секунд.
- Total order time: 30.05 seconds.
- *///~
Advertisement
Add Comment
Please, Sign In to add comment