Cute Running Puppy

Language/[Java] 혼자 공부하는 자바

[#혼공챌린지] 혼자 공부하는 자바_4주차 선택미션

R.silver 2021. 8. 1. 21:16
반응형

#혼공단 #혼공챌린지 #혼공자

https://hongong.hanbit.co.kr/%ed%98%bc%ea%b3%b5-%ea%b2%8c%ec%8b%9c%ed%8c%90/?uid=27&mod=document&pageid=1

 

[#혼공챌린지] 혼공 학습단 6기 도서별 미션과 커리큘럼

안녕하세요, 한빛미디어 혼공단을 운영하는 🧙🏻‍♀️혼공족장🧙🏻‍♀️입니다. #혼공챌린지 혼공학습단 6기와 "혼자 공부하는"시리즈에 관심을 주셔서 감사합니다 🥳 딱 6주만 같이 때

hongong.hanbit.co.kr


혼공 챌린지_자바 4주차 선택 미션

p.539 문제 2번 풀이 인증샷


p.539 문제 2번 풀이 인증샷

 

동영상과 음악을 재생하기 위해 두 가지 스레드를 실행하려 합니다. 1~3번 빈칸에 적당한 코드를 넣어보세요

1번 빈칸

public class ThreadExample {
	public static void main (String[] args) {
    	Thread thread1 = new MovieThread();
        thread1.start();
        
        Thread thread2 = new Thread( [ 1번 ] );
       	thread2.start();
    }
}

 

//정답
new MusicRunnable()

 

Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 Runnalble을 매개값으로 갖는 생성자를 호출해야 한다. 

Runnable은 인터페이스 타입이기에 구현 객체를 만든 후 대입하여야 한다. 

Runnable은 실제 스레드가 아니므로 Runnable 구현 객체를 생성한 후 그것을 매개값으로 하여 Thread 생성자를 호출해야 작업 스레드가 생성된다. 

 

 

2번 빈칸

public class MovieThread [ 2번 ] {
	@override
    public void run() {
    	for (int i = 0; i < 3; i++) {
        	System.out.println("동영상을 재생합니다.");
            try {
            	Thread.sleep(1000);
                } catch (InterruptedException e) {
                }
            }
        }
    }
}

 

//정답
extends Thread

 

작업 스레드가 실행할 작업을 Runnable로 만들지 않고 Thread의 하위 클래스로 작업 클래스를 정의하며 작업 내용을 포함시키려면 

Thread class를 상속한 후 run() 메소드를 @override 해서 스레드가 실행할 코드를 작성하면 된다. 

 

3번 빈칸

public class MusicRunnable [ 3번 ] {
	@override
    public void run () {
    	for (int i = 0; i < 3; i++) {
        System.out.println("음악을 재생합니다.");
        try {
        	Thread.sleep(1000);
            }catch (InterruptedException e) {
            }
        }
    }
}

 

//정답
implements Runnable

 

Runnable은 인터페이스 타입이다. 

인터페이스 타입이기에 구현 객체를 만들어서 대입해야 한다. 

구현 객체는 인터페이스 타입으로 사용할 수 있음을 알리기 위해 클래스 선언부에 implement 키워드를 추가하고 인터페이스 이름을 명시해야 한다.

 

반응형