主题:请高手帮我看看哪里错了
我是想实现多线程编一边记录键盘输入,一边输出.一定要用多线程,但是我的程序只输出开始输入的一个字母,其他就不输出,还有输入输到一定字母就停着,什么回事啊
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BufferLock extends JFrame
{
private JTextField tf1 = new JTextField();
private String d;
private boolean isEmpty=true;
public synchronized void put(String dd)
{
while(!isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e){}
}
d=dd;
isEmpty=false;
notify();
}
public synchronized String get()
{
while(isEmpty)
{
try{
this.wait();
}
catch(InterruptedException e){}
}
isEmpty=true;
notify();
return d;
}
}
class Sender extends Thread implements KeyListener
{
private BufferLock buffer;
private JTextField text;
public Sender(BufferLock buffer,JTextField text)
{
this.buffer=buffer;
this.text=text;
}
public void run()
{
text.addKeyListener(this);
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
buffer.put(e.getKeyChar()+"");
}
public void keyPressed(KeyEvent e)
{
}
}
class Receiver extends Thread
{
private BufferLock buffer;
private JTextField text1;
public Receiver(BufferLock buffer,JTextField text1)
{
this.buffer=buffer;
this.text1=text1;
}
public void run()
{
text1.setText(buffer.get());
}
}
class BufferFrame extends JFrame
{
private JTextField text = new JTextField();
private JTextField text1 = new JTextField();
public BufferFrame()
{ JPanel panel=new JPanel(new GridLayout(2,1));
this.add(panel);
panel.add(text);
panel.add(text1);
this.pack();
this.setResizable(false);
this.setVisible(true);
}
public static void main(String args[])
{
BufferFrame bufferframe=new BufferFrame();
BufferLock buffer=new BufferLock();
(new Sender(buffer,bufferframe.text)).start();
(new Receiver(buffer,bufferframe.text1)).start();
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BufferLock extends JFrame
{
private JTextField tf1 = new JTextField();
private String d;
private boolean isEmpty=true;
public synchronized void put(String dd)
{
while(!isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e){}
}
d=dd;
isEmpty=false;
notify();
}
public synchronized String get()
{
while(isEmpty)
{
try{
this.wait();
}
catch(InterruptedException e){}
}
isEmpty=true;
notify();
return d;
}
}
class Sender extends Thread implements KeyListener
{
private BufferLock buffer;
private JTextField text;
public Sender(BufferLock buffer,JTextField text)
{
this.buffer=buffer;
this.text=text;
}
public void run()
{
text.addKeyListener(this);
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
buffer.put(e.getKeyChar()+"");
}
public void keyPressed(KeyEvent e)
{
}
}
class Receiver extends Thread
{
private BufferLock buffer;
private JTextField text1;
public Receiver(BufferLock buffer,JTextField text1)
{
this.buffer=buffer;
this.text1=text1;
}
public void run()
{
text1.setText(buffer.get());
}
}
class BufferFrame extends JFrame
{
private JTextField text = new JTextField();
private JTextField text1 = new JTextField();
public BufferFrame()
{ JPanel panel=new JPanel(new GridLayout(2,1));
this.add(panel);
panel.add(text);
panel.add(text1);
this.pack();
this.setResizable(false);
this.setVisible(true);
}
public static void main(String args[])
{
BufferFrame bufferframe=new BufferFrame();
BufferLock buffer=new BufferLock();
(new Sender(buffer,bufferframe.text)).start();
(new Receiver(buffer,bufferframe.text1)).start();
}
}