added ex Q1
This commit is contained in:
		
							
								
								
									
										13
									
								
								src/exercises/ex_q1/Pizza.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/exercises/ex_q1/Pizza.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| package exercises.ex_q1; | ||||
|  | ||||
| public class Pizza { | ||||
|     public void prepare() { | ||||
|         System.out.println("Preparing pizza."); | ||||
|     } | ||||
|     public void bake() { | ||||
|         System.out.println("Baking pizza."); | ||||
|     } | ||||
|     public void cut() { | ||||
|         System.out.println("Cutting pizza."); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										34
									
								
								src/exercises/ex_q1/Pizzaiolo.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/exercises/ex_q1/Pizzaiolo.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| package exercises.ex_q1; | ||||
|  | ||||
| import java.util.concurrent.Callable; | ||||
|  | ||||
| public class Pizzaiolo implements Callable<Pizza> { | ||||
|     private final String name; | ||||
|  | ||||
|     public Pizzaiolo(String name) { | ||||
|         this.name = name; | ||||
|     } | ||||
|  | ||||
|     public void serve(Pizza pizza) { | ||||
|         System.out.println(name + "'s pizza is ready: pizza " + pizza.hashCode()); | ||||
|     } | ||||
|  | ||||
|     public Pizza makePizza() throws InterruptedException { | ||||
|         Pizza pizza = new Pizza(); | ||||
|         pizza.prepare(); | ||||
|         Thread.sleep(200); | ||||
|         pizza.bake(); | ||||
|         Thread.sleep(300); | ||||
|         pizza.cut(); | ||||
|         Thread.sleep(100); | ||||
|         return pizza; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Pizza call() throws Exception { | ||||
|         System.out.println("Thread " + name + " started by the executor"); | ||||
|         Pizza pizza = makePizza(); | ||||
|         System.out.println("Thread " + name + " pizza finished"); | ||||
|         return pizza; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										26
									
								
								src/exercises/ex_q1/Pizzeria.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/exercises/ex_q1/Pizzeria.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package exercises.ex_q1; | ||||
|  | ||||
| import java.util.concurrent.ExecutionException; | ||||
| import java.util.concurrent.Executors; | ||||
| import java.util.concurrent.Future; | ||||
| import java.util.concurrent.ScheduledExecutorService; | ||||
|  | ||||
| public class Pizzeria { | ||||
|     public static void main(String[] args) throws ExecutionException, InterruptedException { | ||||
|         ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); | ||||
|         Pizzaiolo marco = new Pizzaiolo("Marco"); | ||||
|         Pizzaiolo antonio = new Pizzaiolo("Antonio"); | ||||
|  | ||||
|         Future<Pizza> future1 = executor.submit(marco); | ||||
|         Future<Pizza> future2 = executor.submit(antonio); | ||||
|         Future<Pizza> future3 = executor.submit(marco); | ||||
|         Future<Pizza> future4 = executor.submit(antonio); | ||||
|  | ||||
|         marco.serve(future1.get()); | ||||
|         antonio.serve(future2.get()); | ||||
|         marco.serve(future3.get()); | ||||
|         antonio.serve(future4.get()); | ||||
|  | ||||
|         executor.shutdown(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user