Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[4주차] 72. Thread, 잠시 멈추게 하는 sleep 메소드(완성) 본문

K-DigitalTraining 강의/1. Java

[4주차] 72. Thread, 잠시 멈추게 하는 sleep 메소드(완성)

이대곤 2022. 6. 3. 12:26

* Thread 클래스의 static 메소드인 sleep()메소드는 try-catch문 안에서만 사용할 수 있음.

  예외처리를 필수로 하지 않아도 될 때는 RuntimeException 클래스를 상속받은 예외가 발생할 수 있는 경우일 때 이다.  
  ex) NullPointerException 은 RuntimeException 을 상속받았기 때문에 try-catch를 필수적으로 해주지 않아도 된다.
        반대의 경우로 InterruptedException은 RuntimeException을 상속받지 않았음

코드

class Big implements Runnable {

	@Override
	public void run() { // 대문자 A ~ Z 출력
		for (char i = 'A'; i <= 'Z'; i++) {
			System.out.print(i + " ");
			
			try {
				Thread.sleep(1000);	// 1초 동안 잠시 잠재우는 메소드, try catch를 사용해야 사용가능
			} catch (InterruptedException e) {
				e.printStackTrace();
			} 
		}//
	}
}

class Small extends Thread {

	@Override
	public void run() { // 소문자 a ~ z 출력
		char c = 'a';

		while (true) {
			System.out.print(c++ + " ");
			if (c == ('z' + 1))
				break;
			
			try {
				Thread.sleep(500); // 0.5초 동안 잠시 잠재우기
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

public class Ex10_03_Thread {
	public static void main(String[] args) {
		System.out.println("프로그램 시작");

		// 첫번째 쓰레드 실행
		Big b = new Big();
		Thread trd = new Thread(b);
		trd.start();
		
		// 두번째 쓰레드 실행
		Small s = new Small();
		s.start();

		System.out.println("프로그램 종료");
	}
}

실행결과

프로그램 시작
A 프로그램 종료
a b B c d C e f D g h E i j F k l G m n H o p I q r J s t K u v L w x M y z N O P Q R S T U V W X Y Z
Comments