import java.awt.*;
import java.awt.event.*;
import java.util.*;
// 쓰레드 클래스를 상속 받아서 run을 오버라이딩 할 것이다.
public class SimpleThread extends Thread{
static Canvas canvas;
int y = 0;
String str = null;
Random rand = new Random();
public SimpleThread(int y, String str){
this.y = y;
this.str = str;
}
// run은 start를 통해서 실행 된다. 현재 run은 오버라이딩 한 상태다.
public void run(){
Graphics g = canvas.getGraphics();
g.drawString(str, 20, y);
for(int i=0;i<300;i++){
try{
Thread.sleep(100);
i += rand.nextInt(5);
//각 말들은 1초 간격으로 0부터 5 까지의 랜덤한 숫자로 달리게 된다.
if(i > 300){
i = 300;
}
g.fillRect(50, y, i, 20);
}catch(Exception e){
}
}
}
public static void main(String args[]){
Frame frm = new Frame("쓰레드 테스트");
canvas = new Canvas();
frm.setSize(400, 400);
frm.add(canvas);
frm.setVisible(true);
SimpleThread test1 = new SimpleThread(30,"1번 말");
SimpleThread test2 = new SimpleThread(70,"2번 말");
SimpleThread test3 = new SimpleThread(110,"3번 말");
SimpleThread test4 = new SimpleThread(150,"4번 말");
SimpleThread test5 = new SimpleThread(190,"5번 말");
SimpleThread test6 = new SimpleThread(230,"6번 말");
SimpleThread test7 = new SimpleThread(270,"7번 말");
test1.start();
test2.start();
test3.start();
test4.start();
test5.start();
test6.start();
test7.start();
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}