?? synchmsgdemo.java
字號:
//@author: j.n.magee 11/11/96
package concurrency.message;
import java.awt.*;
import java.applet.*;
import concurrency.display.*;
public class SynchMsgDemo extends Applet {
ThreadPanel tx;
ThreadPanel rx;
SlotCanvas senddisp;
SlotCanvas recvdisp;
public void init() {
add(tx =new ThreadPanel("Sender",Color.blue,false));
add(senddisp = new SlotCanvas("e",Color.cyan,1));
add(recvdisp = new SlotCanvas("v",Color.cyan,1));
add(rx =new ThreadPanel("Receiver",Color.blue,false));
}
public void start() {
Channel chan = new Channel();
tx.start(new Sender(chan,senddisp));
rx.start(new Receiver(chan,recvdisp));
}
public void stop() {
tx.stop();
rx.stop();
}
}
/*******************SENDER************************/
class Sender implements Runnable {
private Channel chan;
private SlotCanvas display;
Sender(Channel c, SlotCanvas d) {chan=c; display =d;}
public void run() {
try {
int ei = 0;
while(true) {
display.enter(String.valueOf(ei));
ThreadPanel.rotate(12);
chan.send(new Integer(ei));
display.leave(String.valueOf(ei));
ei=(ei+1)%10;
ThreadPanel.rotate(348);
}
} catch (InterruptedException e){}
}
}
/*******************RECEIVER************************/
class Receiver implements Runnable {
private Channel chan;
private SlotCanvas display;
Receiver(Channel c, SlotCanvas d) {chan=c; display =d;}
public void run() {
try {
Integer v=null;
while(true) {
ThreadPanel.rotate(180);
if (v!=null) display.leave(v.toString());
v = (Integer)chan.receive();
display.enter(v.toString());
ThreadPanel.rotate(180);
}
} catch (InterruptedException e){}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -