模拟生产者与消费者实例,生产者生产一个产品,消费者就消费一个产品 ,然后生产者再生产,消费者再消费 ***********************核心方法类****************
0 Y, j" f" A3 T8 q- f" {/ A; B package test.com;6 l) h" \5 ^1 ?7 k: V8 d. k& Z7 G
class Queue
) U' O B0 j9 A, A% x // key# T" g+ {0 Z" V6 p
{
7 s! a* K- o3 x& m+ n! J int value;* U v& v- A) T1 z( D! Q
boolean bFull = false;) [9 F* A3 u, |* d, i& q" H: j
public synchronized void put(int i) {2 F% @( B; D0 v7 _0 @7 y
if (!bFull) {* k/ a! z' R2 Z7 t4 ^
value = i;7 v4 }& v+ k( X# N2 I" b
bFull = true;
5 t1 x8 |1 b9 S$ V1 ]$ s notify();// 必须用在synchronized
6 ]* P5 D- v9 l z, a3 F3 L8 o }8 |9 _* j, q0 x. L
try {
* f; B$ C! a; _ wait();// 必须捕获异常
8 s2 n* k' k# `7 {! o } catch (InterruptedException e) { D5 x4 A1 z1 H- w
// TODO Auto-generated catch block: v+ V! B2 {( M/ `, j Y$ o
e.printStackTrace();2 N$ E2 U- _" P* G" R
}
9 \7 }) y' X8 O+ S3 h9 W( f, L0 w }9 J' C5 v3 I* v2 R2 q4 ?7 y
public synchronized int get() {
6 U$ l( h+ M2 x) p; b if (!bFull)( y6 V; w x& f1 r1 ]
try {, O+ o6 m0 B( O' k. N
wait();//进入6 X3 y$ B. ], }. ]. l5 L2 T
} catch (InterruptedException e) {
" l2 \- D! M4 k) I# Q // TODO Auto-generated catch block
* Y5 c! g$ x6 O* W6 j: h- g- O7 [# d e.printStackTrace();$ U% J& N$ F% o5 ^, j0 M1 Z6 |3 v, A
} |