Importjava.util.List;Importjava.util.ArrayList;ImportJava.util.Queue;Importjava.util.LinkedList; Public classTest3 { Public Static voidMain (string[] args) {FinalManager3 m3 =NewManager3 (); M3.init (); Thread T1=NewThread (NewRunnable () { Public voidrun () { while(true) { if(M3.getter.q.size () > 0) {TestData3 TD=M3.getter.q.pop (); System.out.println (Td.getname ()); } Else { Try{Wait ();}Catch(Exception e) {}}} } }); T1.start (); }}classTestData3 {String type; String ID; String name; TESTDATA3 (String type, string ID, string name) { This. Type =type; This. ID =ID; This. Name =name; } String GetName () {returnname; }}classTestDataQueue3 {Queue<TestData3> q =NewLinkedlist<testdata3>(); voidpush (TestData3 TD) {Q.offer (TD); } TestData3 Pop () {returnQ.poll (); } Longsize () {returnq.size (); }}classManager3 {Getter3 getter=NewGetter3 (); Setter3 Setter=NewSetter3 (); Adapter3 Adapter=Setter3.adapter; voidinit () {adapter.addgetter (getter); Setter.regist (); Setter.putdata (); Adapter.listendata (); }}classGetter3 {TestDataQueue3 Q=NewTestDataQueue3 (); voidUpdate (TestData3 data) {Q.push (data); }}classAdapter3 {TestDataQueue3 Q=NewTestDataQueue3 (); List<Getter3> Glst =NewArraylist<getter3>(); List<Setter3> Slst =NewArraylist<setter3>(); voidAddgetter (Getter3 g) {Glst.add (g); } voidAddsetter (Setter3 s) {slst.add (s); } voidListendata () {Thread T=NewThread (NewRunnable () { Public voidrun () { while(true) { if(Q.size () > 0) {Broadcast (Q.pop ()); } Else { Try{wait (); } Catch(Exception e) {}}} } }); T.start (); } voidBroadcast (TestData3 TD) { for(inti = 0; I < glst.size (); i++{glst.get (i). Update (TD); } }}classSetter3 {Static FinalAdapter3 adapter =NewAdapter3 (); voidregist () {Adapter.addsetter ( This); } voidPutData () {Thread T=NewThread (NewRunnable () { Public voidrun () {inti = 0; while(true) {TestData3 TD=NewTESTDATA3 ("Computer", "C" + String.Format ("%08d", I), "computer" +i); Adapter.q.push (TD); I++; Try{Thread.Sleep (1000); Notify (); } Catch(Exception e) {}}} }); T.start (); }}
A Java multithreaded instance