import java.io.*; class customerOrder { boolean valueset=false; String str[]=new String[3]; synchronized void d_takeOrder(Thread t) { if(valueset) { try { wait(); }catch(InterruptedException e) { System.out.println(e); } } System.out.println("\n"+t); try { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); for(int i=0;i<3;i++) { System.out.print("\n Take an Order "+(i+1)+" :: "); str[i]=br.readLine(); } }catch(IOException e) { System.out.println(e); } valueset=true; notify(); } synchronized void d_dispOrder(Thread t) { if(!valueset) { try { wait(); }catch(InterruptedException e) { System.out.println(e); } } System.out.println("\n"+t); for(int i=0;i<3;i++) { System.out.print("\n Place an Order "+(i+1)+" :: "+str[i]); } valueset=false; notify(); } } class takeOrder implements Runnable { customerOrder d; Thread t; takeOrder(customerOrder d) { this.d=d; t=new Thread(this,"Manager take an order"); t.start(); } publicvoid run() { for(int i=0;i<2;i++) { d.d_takeOrder(t); } } } class dispOrder implements Runnable { customerOrder d; Thread t; dispOrder(customerOrder d) { this.d=d; t=new Thread(this,"Manager place an order"); t.start(); } publicvoid run() { for(int i=0;i<2;i++) { d.d_dispOrder(t); } } } class Restaurant { publicstaticvoid main(String args[]) { customerOrder d=new customerOrder(); new takeOrder(d); new dispOrder(d); } } /* Output Thread[Manager take an order,5,main] Take an Order 1 :: 2 Roti Take an Order 2 :: 1 plat Veg.Jaipuri Sabji Take an Order 3 :: 1 plat Pulav Thread[Manager place an order,5,main] Place an Order 1 :: 2 Roti Place an Order 2 :: 1 plat Veg.Jaipuri Sabji Place an Order 3 :: 1 plat Pulav Thread[Manager take an order,5,main] Take an Order 1 :: 3 Roti Take an Order 2 :: 1 plat Paneerkadai Sabji Take an Order 3 :: 1 plat Biriyani Thread[Manager place an order,5,main] Place an Order 1 :: 3 Roti Place an Order 2 :: 1 plat Paneerkadai Sabji Place an Order 3 :: 1 plat Biriyani */
No comments:
Post a Comment