关于多线程同步
这是我的代码,
class Buffer1
{
private int value;
private boolean isEmpty = true;
synchronized void put(int i)
{
while(!isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e)
{
System.out.println(e.getMessage());
}
}
value = i;
isEmpty=false;
this.notify();
}
synchronized int get()
{
while(isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e)
{
System.out.println(e.getMessage());
}
}
isEmpty = true;
this.notify();
return value;
}
}
class Sender1 extends Thread
{
private Buffer1 bf;
public Sender1(Buffer1 bf)
{
this.bf = bf;
}
public void run()
{
for(int i=1;i<6;i++)
{
bf.put(i);
System.out.println("Sender put:"+i);
}
}
public static void main(String args[])
{
Buffer1 bf=new Buffer1();
(new Sender1(bf)).start();
(new Receiver1(bf)).start();
// System.out.println("afdafd");
}
}
class Receiver1 extends Thread
{
private Buffer1 bf;
public Receiver1(Buffer1 bf)
{
this.bf = bf;
}
public void run()
{
for(int i=1;i<6;i++)
System.out.println("\t\t Receiver get:"+bf.get());
}
}
我想实现这种同步效果,但是怎么改都行不通,谁能告诉我哪错了
Sender put:1
Receiver get:1
Sender put:2
Receiver get:2
Sender put:3
Receiver get:3
Sender put:4
Receiver get:4
Sender put:5
Receiver get:5