The producer and consumer modes are shown in.
Blog purpose: Use graphs to speak.
Sample Code:
Package COM. huan; public class produceconsumer {public static void main (string [] ARGs) {middleware = new middleware (); New thread (new producer (middleware )). start (); New thread (new consumer (middleware )). start () ;}} class producer implements runnable {private middleware; Public producer (middleware) {This. middleware = middleware;} public void produce () throws exception {While (true) {middleware. put () ;}@ overridepublic void run () {try {produce ();} catch (exception e) {e. printstacktrace () ;}} class Consumer implements runnable {private middleware; public consumer (middleware) {This. middleware = middleware;} public void consume () throws exception {While (true) {middleware. get () ;}@ overridepublic void run () {try {consume ();} catch (exception e) {e. printstacktrace () ;}} class middleware {Private Static final int max_size = 10; private int [] storage = new int [max_size]; private int Index = 0; public synchronized void put () throws exception {If (Index = max_size) {Wait ();} storage [Index] = index; system. out. println ("produced:" + index); index ++; Policy ();} public synchronized void get () throws exception {If (Index = 0) {Wait () ;}index --; system. out. println ("consumed:" + storage [Index]); Using Y ();}}
Code defect: when multiple consumers or multiple producers, the code of the above example needs to be improved.
Producer and consumer model