본문 바로가기

코린이

혼공자 4주차 미션 본문

자바/혼공 학습단 10기

혼공자 4주차 미션

winsome99 2023. 7. 30. 12:54
반응형

4주차 기본 미션 p.550 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡처하기

 

1초 주가로 save() 메소드를 호출하는 대몬 스레드(AutoSaveThread.java)

package week12;

public class AutoSaveThread extends Thread{
    public void save(){
        System.out.println("작업 내용을 저장함");
    }

    @Override
    public void run() {
        while(true){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e){
                break;
            }
            save();
        }
    }
}

 

메인 스레드가 실행하는 코드(DaemonExample.java)

package week12;

public class DaemonExample {
    public static void main(String[] args) {
        AutoSaveThread autoSaveThread = new AutoSaveThread();
        autoSaveThread.setDaemon(true);
        autoSaveThread.start();

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e){
        }

        System.out.println("메인 스레드 종료");
    }
}

 

 

선택 미션 p. 539 문제 2번 풀고, 풀이 과정 설명하기

 

ThreadExample.java

package week12;

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

        Thread thread2 = new Thread(_______);
        thread2.start();
    }
}

 

MovieThread.java

package week12;

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

 

MusicRunnable.java

package week12;

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

 

 

풀이 과정

멀티 스레딩 문제로 여러 작업을 동시에 처리하고자 할 때 유용하게 사용한다.

 

ThreadExample 클래스에서는 MovieThread 클래스를 이용하여 thread1을 생성하고 MusicRunnable 클래스를 이용하여 thread2를 생성하여 둘 다 시작한다.

 

MovieThread 클래스는  Thread 클래스를 상속받아 생성하는 방법으로 run() 메소드를 오버라이드하여 안에 반복문을 사용하여 "동영상을 재생합니다." 문장을 3번 출력하고 1초 간격으로 스레드를 일시 정지한다.

 

MusicRunnable 클래스는 Runnable 인터페이스를 구현해 스레드를 생성하는 방법으로 run() 메소드를 오버라이드하여 스레드가 실행될 때 수행한다. 그리고 run() 메소드 안에 MovieThread와 동일하게 반복문을 사용하여 "음악을 재생합니다"의 메시지를 1초 간격으로 출력하여 스레드를 일시 정지한다.

 

위에 두 개의 스레드를 동시에 실행하여 thread1은 동영상 재생 메시지를 출력 thread2는 음악 재생 메시지를 출력한다.

병렬적으로 실행되므로 출력 메시지들이 서로 섞일 수 가 있어 각 스레드는 1초 간격으로 3번씩 메시지를 출력하고 실행이 종료된다.

 

chapter12 스레드

https://winsome99.tistory.com/

 

 

반응형

'자바 > 혼공 학습단 10기' 카테고리의 다른 글

Chapter14 입출력 스트림  (0) 2023.08.20
chapter13 컬렉션 프레임워크  (0) 2023.08.12
chapter12 스레드  (0) 2023.07.29
혼공단 3주차 미션  (0) 2023.07.23
혼공자 Chapter11 API  (0) 2023.07.21
Comments