用Java写的生产者与消费者问题
package 临时练习;
public class createAndEat {
private int out = 0;
private int in = 0;
private int[] a =new int[1000];
public static void main(String[] args) {
// TODO Auto-generated method stub
createAndEat obj=new createAndEat();
createAndEat.creator creator1=obj.new creator();
createAndEat.eator eator1=obj.new eator();
creator1.setName("creator1");
eator1.setName("eator1");
/* creator1.setPriority(Thread.MIN_PRIORITY);
eator1.setPriority(Thread.MAX_PRIORITY);*/
creator1.start();
eator1.start();
}
class creator extends Thread {
public void run() {
while(true){
synchronized (createAndEat.class) {
try {
while (a[in] == 1) {
System.out.println(getName() + " 阻塞");
createAndEat.class.wait();
}
a[in] = 1;
System.out.println(getName() + " creat " + in);
in = (in + 1) % 1000;
createAndEat.class.notify();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
class eator extends Thread {
public void run() {
while(true){
synchronized (createAndEat.class) {
try {
while (a[out] == 0) {
System.out.println(getName() + "阻塞");
createAndEat.class.wait();
}
a[out] = 0;
System.out.println(getName() + " eat " + out);
out = (out + 1) % 1000;
createAndEat.class.notify();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}