主题:请高手指出以下程序哪里错了,应该怎么改
我是想用多线程实现一边键盘输入,一边输出,同步运行,但是java告诉我Sender中的 run()无法实现java.lang.Runnable中的run();被覆盖的BufferLock.java
程序如下
import java.io.*;
public class BufferLock
{
private int j=0;
private byte value;
private boolean isEmpty=true;
public synchronized void put(byte i[]) throws IOException
{
while(!isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e){}
}
value=i[j];
j++;
isEmpty=false;
notify();
}
public synchronized byte get()
{
while(isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e){}
}
isEmpty=true;
notify();
return value;
}
}
class Sender extends Thread
{
private BufferLock buffer;
public Sender(BufferLock buffer)
{
this.buffer=buffer;
}
public void run() throws IOException
{ byte i[]=new byte[512];
while(true)
{
System.in.read(i);
buffer.put(i);
System.out.println("Sender put:"+i);
}
}
}
class Receiver extends Thread
{
private BufferLock buffer;
public Receiver(BufferLock buffer)
{
this.buffer=buffer;
}
public void run()
{
for(;;)
System.out.println("\t\t\t Receiver get:"+buffer.get());
}
public static void main(String args[]) throws IOException
{
BufferLock buffer=new BufferLock();
(new Sender(buffer)).start();
(new Receiver(buffer)).start();
}
}
程序如下
import java.io.*;
public class BufferLock
{
private int j=0;
private byte value;
private boolean isEmpty=true;
public synchronized void put(byte i[]) throws IOException
{
while(!isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e){}
}
value=i[j];
j++;
isEmpty=false;
notify();
}
public synchronized byte get()
{
while(isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e){}
}
isEmpty=true;
notify();
return value;
}
}
class Sender extends Thread
{
private BufferLock buffer;
public Sender(BufferLock buffer)
{
this.buffer=buffer;
}
public void run() throws IOException
{ byte i[]=new byte[512];
while(true)
{
System.in.read(i);
buffer.put(i);
System.out.println("Sender put:"+i);
}
}
}
class Receiver extends Thread
{
private BufferLock buffer;
public Receiver(BufferLock buffer)
{
this.buffer=buffer;
}
public void run()
{
for(;;)
System.out.println("\t\t\t Receiver get:"+buffer.get());
}
public static void main(String args[]) throws IOException
{
BufferLock buffer=new BufferLock();
(new Sender(buffer)).start();
(new Receiver(buffer)).start();
}
}