class Buffer2{
private int value;
private boolean isEmpty = true;
synchronized void put(int i){
while(!isEmpty){
try{
this.wait();
}catch(InterruptedException e){}
}
}
value = i;
isEmpty = false;
  notify();
}
synchronized int get(){
while(isEmpty){
try{
this.wait();
}catch(InterruptedException e){}
isEmpty = true;
notify();
return value;
}
}
class put2 extends Thread{
private Buffer2 bf;
public put2(Buffer2 bf){
this.bf = bf;
}
public void run(){
for(int i=1;i<6;i++){
bf.put(i);
System.out.println("put2 put:"+i);
}
}
public static void main(String[]args){
Buffer2 bf = new Buffer2();
(new put2(bf)).start();
(new put2(bf)).start();
}
}
class Get2 extends Thread{
private Buffer2 bf;
public void Get(Buffer2 bf){
this.bf = bf;
}
public void run(){
for(int i=1;i<6;i++)
System.out.println("\t\t  Get get:"+bf.get());
}
}编译出错,请高手帮忙一下

解决方案 »

  1.   

    错误真多啊!!!
    public class Buffer2 {
    private int value;
    private boolean isEmpty = true; synchronized void put(int i) {
    // while (!isEmpty) {
    if (!isEmpty) {
    try {
    this.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    value = i;
    isEmpty = false;
    notify();
    } synchronized int get() {
    // while (isEmpty) {
    if (isEmpty) {
    try {
    this.wait();
    } catch (InterruptedException e) {
    }
    }
    isEmpty = true;
    notify();
    return value;
    // }
    }}public class Put2 extends Thread {
    private Buffer2 bf; public Put2(Buffer2 bf) {
    this.bf = bf;
    } public void run() {
    for (int i = 1; i < 6; i++) {
    bf.put(i);
    System.out.println("put2 put:" + i);
    }
    } public static void main(String[] args) {
    Buffer2 bf = new Buffer2();
    //(new put2(bf)).start();
    //(new put2(bf)).start();
    new Put2(bf).start();
    new Get2(bf).start();
    }
    }public class Get2 extends Thread {
    private Buffer2 bf;

    public Get2(Buffer2 bf) {
    //public void Get(Buffer2 bf) {
    this.bf = bf;
    } public void run() {
    for (int i = 1; i < 6; i++)
    System.out.println("\t\t Get get:" + bf.get());
    }
    }