Create a container first
/*** Container * shared resources *@authorAdministrator **/ Public classSynstack {intindex = 0; //Containersteambread[] STB =NewSteambread[6]; /*** Placing products in containers*/ Public synchronized voidpush (Steambread St) { while(Index = =stb.length) { Try { This. Wait (); } Catch(interruptedexception e) {//TODO auto-generated Catch blockE.printstacktrace (); }} notify ();//waking a waiting threadStb[index] =St; This. index++; } /*** Take products from the container*/ Public synchronizedsteambread Pop () { while(Index = = 0){ Try { This. Wait (); } Catch(interruptedexception e) {//TODO auto-generated Catch blockE.printstacktrace (); }} notify (); This. index--; returnStb[index]; }}
Production of steamed bread
Packagecom.newer.cn; Public classProducerImplementsrunnable{Synstack SS=NULL; PublicProducer (Synstack ss) {//TODO auto-generated Constructor stub This. SS =SS; } @Override Public voidrun () {//started production of steamed bread for(inti = 1;i <= 20;i++) {steambread STB=NewSteambread (i); System.out.print ("Produced by::::::"); Ss.push (STB); System.out.println ("Produced" +STB); Try{Thread.Sleep (5000); } Catch(interruptedexception e) {//TODO auto-generated Catch blockE.printstacktrace (); } } }}
Consumption steamed Bread
Packagecom.newer.cn; Public classConsumeImplementsrunnable{Synstack SS=NULL; Publicconsume (Synstack ss) { This. SS =SS; } @Override Public voidrun () {//started to consume steamed bread for(inti = 1;i <= 20;i++) {System.out.print ("Consumption::-::::"); Steambread STB=Ss.pop (); System.out.println ("Consumption" +STB); Try{Thread.Sleep (1000); } Catch(interruptedexception e) {//TODO auto-generated Catch blockE.printstacktrace (); } } }}
Test
Packagecom.newer.cn; Public classTest2 { Public Static voidMain (string[] args) {synstack ss=NewSynstack (); //Producer ThreadsProducer p =NewProducer (ss); Thread TP=NewThread (P); //Consumer ThreadsConsume C =Newconsume (ss); Thread TC=NewThread (c); Tp.start (); Tc.start (); }}
Multi-threading, producer consumer model (production of steamed bread, consumption of steamed bread)