이어서 4주차 선택미션 진행해볼게요~!
[539쪽 2번 문제]
동영상과 음악을 재생하기 위해 두 가지 스레드를 실행하려고 합니다.
((1)), ((2)), ((3))에 적당한 코드를 넣어보세요.
(소스 코드 ThreadExample.java)
public class ThreadExample {
public static void main(String[] args) {
Thread thread1 = new MovieThread();
thread1.start();
Thread thread2 = new Thread(new MusicRunnable());
thread2.start();
}
}
(소스 코드 MovieThread.java)
public class MovieThread extends Thread {
@Override
public void run() {
for(int i = 0; i < 3; i++) {
System.out.println("동영상을 재생합니다");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}
}
(소스 코드 MusicRuannable.java)
public class MusicRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i<3; i++) {
System.out.println("음악을 재생합니다");
try {
Thread.sleep(1000);
} catch (Exception e) {}
}
}
}
(실행 결과 화면)
작업 스레드 생성과 실행
메인 스레드는 반드시 존재하기 때문에
메인 작업 이외에 추가하고 싶은 병렬 작업의 수만큼 스레드를 생성
자바에서는 작업 스레드도 객체로 생성되므로 클래스가 필요
1. java.lang.Thread 클래스 직접 객체화해서 생성
(위에 MusicRuannable.java가 이 방법 사용)
2. Thread 클래스 상속하여 하위 클래스 만들어 생성
(위에 MovieThread.java가 이 방법 사용)
java.lang.Thread 클래스로부터 작업 스레드 객체 직접 생성
-> Runnable을 매개값으로 갖는 생성자 호출해야 함
Thread thread = new Thread(Runnable target);
Runnable 구현 클래스 작성
class Task implements Runnable {
public void run(){
// 스레드가 실행할 코드
}
}
위에서 언급했듯이, Runnable을 매개값으로 Thread 생성자 호출
Thread thread = new Thread(new Task());
작업 스레드는 즉시 실행되는 것이 아니라,
thread.start();
start( ) 메소드가 호출되어야 작업을 처리한다
Thread 클래스를 상속한 후,
run( ) 메소드를 재정의(overriding)해서 스레드가 실행할 코드 작성
public class WorderThread extends Thread {
@Override
public void run() {
// 스레드가 실행할 코드
}
}
Thread thread = new WorkerThread();
start( ) 메소드 호출 시
작업 스레드는 자신의 run( ) 메소드 실행
thread.start();
[혼공단 2기] 5주차 미션(2): 직접 정리한 키워드 정리 공유 (+ 컬렉션 프레임 워크 [직접 해보는 손코딩] ) (0) | 2019.11.10 |
---|---|
[혼공단 2기] 5주차 미션(1): 직접 정리한 키워드 정리 공유 (+ 컬렉션 프레임 워크 [직접 해보는 손코딩] ) (0) | 2019.11.10 |
[혼공단 2기] 4주차 미션(1): 데몬 스레드 [직접 해보는 손코딩] 인증샷 (+ 멀티 스레드 확인문제 2번) (0) | 2019.11.03 |
[혼공단 2기] 3주차 미션: 혼공 용어 노트 활용 인증샷 (+ java.lang 패키지 확인문제 8번) (0) | 2019.10.27 |
[혼공단 2기] 2주차 미션(2): 상속 확인문제 5번 (+객체 지향 프로그래밍 개념 정리) (0) | 2019.10.21 |
댓글 영역