📄 joindemo.java
字号:
//@author: j.n.magee 11/11/96
package concurrency;
import java.awt.*;
import java.applet.*;
import concurrency.display.*;
public class JoinDemo extends Applet {
ThreadPanel ms;
ThreadPanel sl;
SlotCanvas resultdisp;
public void init() {
add(ms =new ThreadPanel("Master",Color.blue,true));
add(resultdisp = new SlotCanvas("res",Color.cyan,1));
add(sl =new ThreadPanel("Slave",Color.blue,true));
}
public void start() {
ms.start(new Master(sl,resultdisp));
}
public void stop() {
ms.stop();
}
}
/*******************MASTER************************/
class Master implements Runnable {
ThreadPanel slaveDisplay;
SlotCanvas resultDisplay;
Master(ThreadPanel tp, SlotCanvas sc)
{slaveDisplay=tp; resultDisplay=sc;}
public void run() {
try {
String res=null;
while(true) {
while (!ThreadPanel.rotate());
if (res!=null) resultDisplay.leave(res);
// create new slave thread
Slave s = new Slave();
Thread st = slaveDisplay.start(s,false);
// continue execution
while (ThreadPanel.rotate());
// wait for slave termination
st.join();
// get and display result from slave
res = String.valueOf(s.result());
resultDisplay.enter(res);
}
} catch (InterruptedException e){}
}
}
/*******************SLAVE************************/
class Slave implements Runnable {
int rotations = 0;
public void run() {
try {
while (!ThreadPanel.rotate()) ++rotations;
} catch (InterruptedException e){}
}
int result(){
return rotations;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -