📄 raceapplet.java
字号:
import java.awt.*;
import java.applet.Applet;
public class RaceApplet extends Applet implements Runnable {
final static int NUMRUNNERS=2; //定义常量
final static int SPACING=15;
Runner runners[]=new Runner[NUMRUNNERS];
Thread updateThread;
public void init() {
String raceType=getParameter("type"); //定义字符串变量
for (int i=0; i<NUMRUNNERS;i++) {
runners[i]=new Runner(); //创建两个线程runner1和runner2
runners[i].setPriority(i+1);
} //其中runner1的优先级为1,而runner2的优先级为2
if(updateThread==null) {
updateThread=new Thread(this,"Thread Race");
updateThread.setPriority(NUMRUNNERS+1);
} //创建一个updateThread线程, 优先级为3
}
public boolean mouseDown(Event evt, int x, int y) {
if (!updateThread.isAlive())
updateThread.start(); //当在applet区按下鼠标时调用updateThread
for (int i=0;i<NUMRUNNERS;i++) {
if (!runners[i].isAlive())
runners[i].start();
}
return true;
}
public void paint(Graphics g) {
g.setColor(Color.yellow); //初始化paint方法
g.fillRect(0,1,size().width,size().height); //设置颜色
g.setColor(Color.red);
for (int i=0; i<NUMRUNNERS; i++) {
int pri=runners[i].getPriority();
g.drawString(new Integer(pri).toString(),0,(2*i+1)*SPACING);
}
update(g);
}
public void update(Graphics g) {
for (int i=0;i<NUMRUNNERS; i++) {
g.drawLine(SPACING,(i+i)*SPACING+10,SPACING+(runners[i].tick)/1000,
(i+i)*SPACING+10);
}
}
public void run() {
while (updateThread!=null) {
repaint();
try {
updateThread.sleep(10);
} catch (InterruptedException e) {
}
}
}
public void stop() {
for (int i=0; i<NUMRUNNERS; i++) {
if (runners[i].isAlive()) {
runners[i].stop();
runners[i]=null;
}
}
if (updateThread.isAlive()) {
updateThread.stop();
updateThread=null;
}
}
}
class Runner extends Thread {
public int tick=1; //定义实例变量
public void run() {
while (tick<500000) {
tick++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -