✏️ 진도: Chapter 12 (스레드)
📖 기본 미션: p. 550 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡처하기
❗️교재에 나와 있는 [직접 해보는 손코딩]대로 써보면 다음과 같이 '작업 내용을 저장함.'이 두 번만 출력된다.
0초
1초 - "작업 내용을 저장함." 출력
2초 - "작업 내용을 저장함." 출력
3초 - "메인 스레드 종료" 출력
❗️그러나 save()메소드의 실행위치를 바꾸면 교재의 실행결과 처럼 '작업 내용을 저장함'이 세 번 출력된다.
0초 - "작업 내용을 저장함." 출력
1초 - "작업 내용을 저장함." 출력
2초 - "작업 내용을 저장함." 출력
3초 - "메인 스레드 종료" 출력
📚 선택 미션: p. 539 문제 2번 풀고, 풀이 과정 설명하기
❓동영상과 음악을 재생하기 위해 두 가지 스레드를 실행하려고 합니다. 빈칸 1 ~ 3 에 적당한 코드를 넣어보세요.
package sec01.exam02;
public class ThreadExample {
public static void main(String[] args) {
Thread thread1 = new MovieThread();
thread1.start();
Thread thread2 = new Thread(new MusicRunnable()); // 1번 빈칸 new MusicRunnable()
thread2.start();
}
}
package sec01.exam02;
public class MovieThread extends Thread { // 2번 빈칸 extends Thread
@Override
public void run() {
for(int i=0; i<3; i++) {
System.out.println("동영상을 재생합니다.");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}
}
package sec01.exam02;
public class MusicRunnable implements Runnable{ // 3번 빈칸 implements Runnable
@Override
public void run() {
for (int i=0; i<3; i++) {
System.out.println("음악을 재생합니다.");
try {
Thread.sleep(500);
} catch (InterruptedException e) {}
}
}
}
✅ 1번 빈칸: 작업 스레드를 Thread 클래스로부터 직접 생성하는 방식으로 Runnable을 매개값으로 갖는 생성자를 호출해야 하며 Runnable이 인터페이스 타입이기 때문에 구현 객체를 만들어야 한다. 따라서 여기에는 new MusicRunnable()이 들어간다.
✅ 2번 빈칸: 작업 스레드가 실행할 작업을 Runnable로 만들지 않고 Thread의 하위 클래스로 작업 스레드를 정의하는 방법을 쓰고 있다. 따라서 Thread 클래스를 상속해야 하므로 2번 빈칸에는 extends Thread가 들어간다.
✅ 3번 빈칸: Runnable이 인터페이스 이기 때문에 Runnable의 구현 클래스 MusicRunnable에 있는 3번 빈칸에는 implements Runnable이 들어간다.
'컴퓨터 & 코딩 > Java' 카테고리의 다른 글
[혼공학습단 10기][혼공자] 컬렉션 프레임워크 (0) | 2023.07.20 |
---|---|
[혼공학습단 10기][혼공자] 스레드 제어 (0) | 2023.07.18 |
[혼공학습단 10기][혼공자] 멀티 스레드 (0) | 2023.07.17 |
[혼공학습단 10기][혼공자] 기본 API 클래스 (0) | 2023.07.13 |
[혼공학습단 10기][혼공자] 상속 / 타입 변환과 다형성 / 추상 클래스 (0) | 2023.07.13 |