public class PCTest {
public static void main(String[] args) {
Sharing s = new Sharing();
Producer p = new Producer(s, 1);
Consumer c = new Consumer(s, 2);
   p.start();
c.start();
}
}
class Sharing {
private int contents;
    private boolean pt=false;
public synchronized int get() {
while(pt==false)
try{
wait();
}catch(InterruptedException e){
}
pt=false;
notify();
return contents;
} public synchronized void put(int value) {
while(pt==true){
try{
wait();
}catch(InterruptedException e){}
}
contents = value;
pt=true;
notify();
}
}
class Producer extends Thread {
private Sharing shared; private int number; public Producer(Sharing s, int number) {
shared = s;
this.number = number;
}
public void run() {

for (int i = 0; i < 5; i++) {
shared.put(i);
System.out.println("Producer" + this.number + "输出的数据为:" + i);
        try {
  sleep((int) (Math.random() * 200));
             
} catch (InterruptedException e) {
}

}
}
}
class Consumer extends Thread {
private Sharing shared; private int number; public Consumer(Sharing s, int number) {
shared = s;
this.number = number;
}
public void run(){
int value=0;
for(int i=0;i<5;i++){
value=shared.get();
System.out.println("Consumer"+this.number+"得到的数据为"+value);
}
}
}
请问:
我为什么得不到下面这样的结果:Producer1输出的数据为:0
Consumer2得到的数据为0
Producer1输出的数据为:1
Consumer2得到的数据为1
Producer1输出的数据为:2
Consumer2得到的数据为2
Producer1输出的数据为:3
Consumer2得到的数据为3
Producer1输出的数据为:4
Consumer2得到的数据为4