본문 바로가기

혼공학습단 8기

[혼공학습단] 혼자 공부하는 자바 4주차

📚 기본미션 :  p. 550 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡쳐하기

소스코드

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

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

 

    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("메인 스레드 종료");
    }

 

실행결과

 

1초 주기로 데몬 스레드인 AutoSaveThread의 save() 메소드가 호출되어 "작업 내용을 저장함." 이 출력된다. 3초가 되는 시점에 "메인 스레드 종료" 가 출력되면서 메인 스레드가 종료되고, 데몬 스레드 역시 자동으로 강제 종료.

 

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

 

문제

=> runnable 을 구현한 경우는 바로 start가 불가하므로 Thread 객체를 생성 후 매개변수로 MusicRunnable 인스턴스를 넣어준다.

 

 

=> Thread를 상속받는 MovieThread 클래스 생성

 

 

=> Runnable은 인터페이스 이므로 구현! (implements)
이 구현 클래스 내에서 Runnable의 메소드 run()을 재정의(Override)하여 사용해야 한다.

 

 

실행결과

 

소스코드

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

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

 

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

 

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) {
            }
        }
    }
}

 

벌써 4주차가 끝나고 다음주는 휴가!

휴가는 안 가지만 마침 회사가 바쁜 시기라 다행이라 생각했다,,

(억지로라도) 이렇게 꾸준히 계획에 맞춰 공부하니까 너무 뿌듯하고요
이게 다 혼곡족장님이 잘 이끌어주신 덕분인 것 같다,, 새삼 감사합니다 🥰