📄 testsenderandreceiver.java
字号:
public class TestSenderAndReceiver { public static void main (String args[ ]) { SharedBuffer buffer = new SharedBuffer () ; Sender s1 = new Sender (buffer) ; Receiver r2 = new Receiver (buffer) ; s1.start () ; r2.start () ; } // main方法结束} // 类TestSenderAndReceiver结束//声明发送者类class Sender extends Thread { SharedBuffer theBuffer ; public Sender (SharedBuffer s) { theBuffer = s ; } public void run () { char c ; for (int i = 0 ;i < 5 ;i++) { c = (char) (Math. random()*31 +'A'); theBuffer.send(c) ; System.out .println("Sender : "+ c) ; try{ Thread.sleep( ( int ) ( Math.random() * 1000 ) ); }catch ( InterruptedException e ){ System.out.println("Exception:" + e.getMessage()); } // try/catch 块结束 } // for 结束 } // run()方法结束} // 类Sender结束// 声明接收者类class Receiver extends Thread { SharedBuffer theBuffer ; public Receiver (SharedBuffer s) { theBuffer = s ; } public void run () { char c ; for (int i = 0 ;i < 5 ;i++) { c = theBuffer.receive () ; System.out.println("Receiver : "+ c) ; try{ Thread.sleep( ( int ) ( Math.random() * 3000 ) ); }catch ( InterruptedException e ){ System.out.println("Exception:" + e.getMessage()); } // try/catch块结束 } // for结束 } // run()方法结束} // 类Receiver结束// 共享缓冲区类class SharedBuffer { private static int BUFFERSIZE = 5; private int index = 0 ; private char buf [ ] = new char[ BUFFERSIZE ] ; public synchronized void send (char c) { while (index == buf.length) { // 如果缓冲区已满,则发送线程等待 try { wait(); } catch( InterruptedException e) {} } // while结束 notify(); buf[index] = c ; index++; } // send()方法结束 public synchronized char receive () { while (index == 0) { // 如果缓冲区空,则接受线程等待 try { wait () ; } catch( InterruptedException e) {} } // while结束 notify(); //接受线程接受后唤醒发送线程发送数据 index-- ; return buf[index] ; } // receive方法结束} // 类SharedBuffer结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -