package kr.or.didt.basic;
/*
* 3개의 쓰레드가 각각 알파벳 A~Z까지 출력하는데
* 출력을 끝낸 순서대로 결과를 나타내는 프로그램 작성하기
*
*/
public class ThreadTest12 {
public static void main(String[] args) {
DispalyCharacter[] ths = new DispalyCharacter[]{
new DispalyCharacter("홍길동"),//배열이니까 콤마 사용
new DispalyCharacter("이순신"),
new DispalyCharacter("강감찬")
};
for(DispalyCharacter dc : ths){
dc.start();
}
//모든 경기가 끝날때 까지 기다린다
for(DispalyCharacter dc : ths){
try {
dc.join(); //스레드가 끝날때 까지 기다리는것
} catch (Exception e) {
// TODO: handle exception
}
}
System.out.println();
System.out.println("경기 결과");
System.out.println("순위 : "+ DispalyCharacter.setRank);
}
}
// A~Z까지 출력하는 쓰레드
class DispalyCharacter extends Thread{
public static String setRank ="";
private String name;
//생성자
public DispalyCharacter(String name) {
this.name = name;
}
@Override
public void run() {
for (char ch = 'A'; ch < 'Z'; ch++) {
System.out.println(name+"의 출력 문자: "+ch);
//일시정지 시간을 줘서 경주하는 느낌만들기
try {
//0~499사이의 난수값으로 일시정지 시킨다.
Thread.sleep((int)(Math.random() * 500));
} catch (InterruptedException e) {
}
}
System.out.println(name +"출력 끝..");
//출력을 끝낸 순서대로 이름을 배치한다.
DispalyCharacter.setRank += name + " ";
}
}