package Winter; class Buffer2{ private int value; private boolean isEmpty=true;//value是否为空的信号量 synchronized void put(int i)//放数据 { while(!isEmpty) { try{ this.wait(); }catch(InterruptedException e) { System.out.println(e.getMessage()); } } value=i; isEmpty=false; notify(); } synchronized int get(){//取数据 while(isEmpty){ try{ this.wait(); }catch(InterruptedException e){System.out.println(e.getMessage());} } isEmpty=true; notify(); return value; } } class Get2 extends Thread{//取数据线程 private Buffer2 bf; public Get2(Buffer2 bf){this.bf=bf;} public void run() { for(int i=1;i<6;++i) System.out.println("\t\t Get2 get:" +bf.get()); } } public class Put2 extends Thread {//放数据线程 /** * @param args */ 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) { // TODO Auto-generated method stub Buffer2 bf=new Buffer2(); (new Put2(bf)).start(); (new Get2(bf)).start(); } } //java/6483