public void run() {
" Q# V- r1 j4 ]7 {. e) d2 G System.out.println("********Consumer****start*****");& Y3 l+ q& |6 G2 n3 s/ v: ^
while(true)
% M. G# e' b! q( `8 {; T% g {
1 B. {2 Q: I4 ?" m! f, F2 {$ z System.out.println("Consumer:"+q.get());
7 Q% M; v* [& q0 a- \ System.out.println("********Consumer****end*****");9 v: @' N7 ^# N- R3 R/ |- k* \
}
' k2 r/ @9 {4 J, F) H }' l. }( `6 M% `3 Q3 I
}
0 X/ t. F! R7 w& f ************************************************************************
5 \7 T+ v- }" f$ V7 G0 i7 c% U *******************************主函数调用类**********************************4 X& J4 Y( y# `; k( N Z) K7 \! s( P
package test.com;& {+ g6 m j: V" [
public class Test {
: v2 C2 S& X! j: X3 T0 K public static void main(String[] args) {+ _1 h! ^! |1 y4 h' ^: k/ h3 }
Queue q=new Queue();
- C1 V7 e5 ^* F' p% q9 ?' A Producter p=new Producter(q);0 A+ C( U) v* g/ S
Consumer c=new Consumer(q);; m- k* L2 s$ Z
p.start();
7 @2 u1 k) O8 h: ] c.start();
6 M+ h% H2 b' C F8 v: M. n* N) _ }}
" y8 q5 Z3 o |/ W; C. [( ^ *****************************************************************. p; x! ]) r: W( z/ g
OK,实现完毕
0 n6 w' p" m/ z; K$ }1 l# C6 ] wait方法——把线程放入wait set
3 }- V4 _7 L' M notify方法——从wait set拿出线程
& t) C4 {# c' O* V notifyAll方法——从wait set拿出所有线程; w' p# d, @; k
wait、notify、notifyAll是Object类的方法 |