pop2bubbledev 2025. 4. 4. 22:25

금일은 오전에 학교수업이있어 오후수업만 들었다

오후는 시험 + 어제 혼자 푼 문제를 강사님께서 새로 풀어주셨기에 진도상  바뀐것이없어

혼자 풀어본 예제 몇가지로 대체하겠다

아래는 강사님이 주셨던 기본기 예제들이다 아직 Thread 사용법을 제대로 익히지 못한것 같다

기존에도 컴퓨터 부품에 관심이 많아 Thread 가 하는 일에대한 이론은 알고있었지만 실제로 사용하려니 다르다

 

4. 메인 스레드는 0.5초마다 a부터 알파벳을 차례대로 출력하고, 작업 스레드는 0부터 4까지 1초마다 하나씩 증가하면서 출력한다. 메인 스레드는 작업 스레드가 종료될 때까지만 자신이 작업을 수행한다. 작업 스레드를 Thread의 자식 클래스로 작성하고 메인 스레드와 작업 스레드를 테스트하느 프로그램 작성

package Day18.BasicExam.Exam04;

public class ThreadMain {
    public static void main(String[] args) {
        ChildThread child = new ChildThread();
        Thread main = new Thread(new Runnable() {
            @Override
            public void run() {
                    for (char i = 97; i <= 122; i++) {
                        if (child.isAlive()) {
                            System.out.println("메인 스레드 : " + i);
                            try {
                                Thread.sleep(500);
                            } catch (InterruptedException e) {
                                throw new RuntimeException(e);
                            }//end of try
                        } else {
                            break;
                        }//end of if
                    }//end of for
            }//end of run
        });
        main.start();
        child.start();


    }

}
package Day18.BasicExam.Exam04;

public class ChildThread extends Thread{
    public void run(){
        for (int i =0; i < 5; i++){
            System.out.println("작업 스레드 : " + i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }//end of try
        }//end of for
    }//end of run

}

 

4번 예제 내용대로 작업 스레드는 1초에한번 메인 스레드는 0.5초에 한번 동작한다 그러나 출력값이 작업스레드 한번에 메인스레드3번인경우가 생긴다 이 부분을 아직 해결하지 못하였다.