📄 entrydemo.java
字号:
//@author: j.n.magee 11/11/96
package concurrency.message;
import java.awt.*;
import java.applet.*;
import concurrency.display.*;
public class EntryDemo extends Applet {
ThreadPanel clA,clB,sv;
SlotCanvas clientAdisp, clientBdisp, serverdisp;
public void init() {
setLayout(new BorderLayout());
Panel bot = new Panel();
Panel top = new Panel();
top.setLayout(new FlowLayout(FlowLayout.CENTER,80,5));
top.setBackground(Color.cyan);
bot.add(clA =new ThreadPanel("Client A",Color.magenta,false));
bot.add(sv =new ThreadPanel("Server",Color.blue,true));
bot.add(clB =new ThreadPanel("Client B",Color.yellow,false));
top.add(clientAdisp = new SlotCanvas("req A",Color.cyan,1));
top.add(serverdisp = new SlotCanvas("v",Color.cyan,1));
top.add(clientBdisp = new SlotCanvas("req B",Color.cyan,1));
add("Center",top);
add("South",bot);
}
public void start() {
Entry entry = new Entry();
clA.start(new Client(entry,clientAdisp,"A"));
clB.start(new Client(entry,clientBdisp,"B"));
sv.start(new Server(entry,serverdisp));
}
public void stop() {
clA.stop();
clB.stop();
sv.stop();
}
}
/*******************CLIENT************************/
class Client implements Runnable {
private Entry entry;
private SlotCanvas display;
private String id;
Client(Entry e, SlotCanvas d, String s)
{entry=e; display =d; id=s;}
public void run() {
try {
while(true) {
ThreadPanel.rotate(90);
display.enter(id);
String result = (String)entry.call(id);
display.leave(id); display.enter(result);
ThreadPanel.rotate(90);
display.leave(result);
ThreadPanel.rotate(180);
}
} catch (InterruptedException e){}
}
}
/*******************Server************************/
class Server implements Runnable {
private Entry entry;
private SlotCanvas display;
Server(Entry e, SlotCanvas d)
{entry=e; display =d;}
public void run() {
try {
while(true) {
while(!ThreadPanel.rotate());
String request = (String)entry.accept();
display.enter(request);
if (request.equals("A"))
ThreadPanel.setSegmentColor(Color.magenta);
else
ThreadPanel.setSegmentColor(Color.yellow);
while(ThreadPanel.rotate());
display.leave(request);
entry.reply("R");
}
} catch (InterruptedException e){}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -