출력을 끝낸 순서대로 결과를 나타내는 프로그램 작성하기

조수경·2021년 11월 8일
0

고급자바

목록 보기
26/97
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 + " ";
	}
}
profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보