Producer and consumer models are typical models in multi-threading, where Java is used to complete the model
Servertest.java Producer Code
PackageCom.orange.threadmodel;ImportJava.util.Queue; Public classServertestImplementsrunnable{PrivateQueue<string>queue; PublicServertest (queue<string>queue) { This. Queue =queue; } @Override Public voidrun () { while(true){ Try{ if(Queue.size () < 10) {System.out.println ("Generate Goods ..."); Queue.offer ("String-->"); Thread.Sleep (1000); }Else{System.out.println ("Unable to generate goods, inventory full"); Thread.Sleep (3000); } }Catch(Exception e) {e.printstacktrace (); } } } }
Clienttest.java Consumer Code
PackageCom.orange.threadmodel;ImportJava.util.Queue; Public classClienttestImplementsrunnable{PrivateQueue<string>queue; PublicClienttest (queue<string>queue) { This. Queue =queue; } @Override Public voidrun () { while(true){ Try{ if(Queue.isempty ()) {System.out.println ("The goods are consumed and no longer consumed ..."); Thread.Sleep (10000); }Else{System.out.println ("Consumer goods ..."); Queue.poll (); Thread.Sleep (20000); } }Catch(Exception e) {e.printstacktrace (); } } }}
Modelclient.java Test Model Code
PackageCom.orange.threadmodel;ImportJava.util.Queue;ImportJava.util.concurrent.ArrayBlockingQueue; Public classmodelclient {Private Staticqueue<string> queue =NewArrayblockingqueue<string> (10); Public Static voidMain (string[] args) {Servertest St=Newservertest (queue); Clienttest CT=Newclienttest (queue); Thread T1=NewThread (ST); Thread T2=NewThread (CT); T1.start (); T2.start (); } }
Test results:
Java completes producer consumer model