日期:2014-05-20 浏览次数:20873 次
import java.util.ArrayList;
import java.util.List;
class Zhan{
private List<Character> date = new ArrayList<Character>();
private int cnt;
private int MaxCount = 6;
public synchronized void push(char ch) {
while (cnt == MaxCount) {
try {
this.wait();
} catch (Exception e) {
}
}
this.notify();
date.add(ch);
cnt++;
System.out.printf("生产线程正在生产第%d个产品,这个产品是:%c\n", cnt,date.get(cnt-1));
}
public synchronized int pop(){
while (cnt == 0) {
try {
this.wait();
} catch (Exception e) {
}
}
this.notify();
cnt--;
System.out.printf("消费线程正在消费第%d个产品,这个产品是:%c\n", cnt+1,date.get(cnt));
date.remove(cnt);
return cnt;
}
public void run() {
}
}
class Sheng implements Runnable {
Zhan z = null;
char ch;
public Sheng(Zhan z) {
this.z = z;
}
public void run() {
for (int i = 0; i < 20; i++){
ch = (char)('a' + i);
z.push(ch);
}
}
}
class Xiao implements Runnable {
Zhan z = null;
public Xiao(Zhan z) {
this.z = z;
}
public void run() {
for (int i = 0; i < 20; i++){
z.pop();
}
}
}
public class H {
public static void main(String[] args) {
Zhan z = new Zhan();
Sheng s = new Sheng(z);
Xiao x = new Xiao(z);
Thread t1 = new Thread(s);
Thread t2 = new Thread(x);
t1.start();
t2.start();
}
}