코드 그라데이션

후발대 22일차 설명 추가(thread) 본문

Java/후발대

후발대 22일차 설명 추가(thread)

완벽한 장면 2023. 3. 8. 01:23

정답 코드는 다음과 같다.

package Prac20;

// A 상품 준비 1/5
// B 상품 준비 2/5
//      ...
// -- A 상품 준비 완료 --
// -- B 상품 준비 완료 --
// == 세트 상품 포장 시작 ==
// 세트 상품 포장 1/5
//      ...
// == 세트 상품 포장 완료 ==

public class Prac20 {
    public static void main(String[] args) {
        Runnable runnableA = () -> {
            for (int i = 1; i <=5 ; i++) {
                System.out.println("A 상품 준비 " + i + "/5");
            };
            System.out.println(" -- A 상품 준비 완료 -- ");
        };

        Runnable runnableB = () -> {
            for (int i = 1; i <=5 ; i++) {
                System.out.println("B 상품 준비 " + i + "/5");
            };
            System.out.println(" -- B 상품 준비 완료 -- ");
        };

        Thread threadA = new Thread(runnableA);
        Thread threadB = new Thread(runnableB);

        threadA.start();
        threadB.start();

        try {
            threadA.join(); 기다리기
            threadB.join();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }


        Runnable runnableSet = () -> {
            System.out.println("== 세트 상품 포장 시작 ==");
            for (int i = 1; i <=5 ; i++) {
                System.out.println("세트 상품 포장 " + i + "/5");
            };
            System.out.println("== 세트 상품 포장 완료 == ");
        };
        Thread threadSet = new Thread(runnableSet);
        threadSet.start();
    }
}
/**
 * Runnable 객체 3개 만들었다.
 */

 

그런데, 기다리기 방법이 하나 더 있다.

바로, 

public class Prac20 {
    public static void main(String[] args) {
        Runnable runnableA = () -> {
            for (int i = 1; i <=5 ; i++) {
                System.out.println("A 상품 준비 " + i + "/5");
            };
            System.out.println(" -- A 상품 준비 완료 -- ");
        };

        Runnable runnableB = () -> {
            for (int i = 1; i <=5 ; i++) {
                System.out.println("B 상품 준비 " + i + "/5");
            };
            System.out.println(" -- B 상품 준비 완료 -- ");
        };

        Thread threadA = new Thread(runnableA);
        Thread threadB = new Thread(runnableB);

        threadA.start();
        threadB.start();

        while (threadA.isAlive() || threadB.isAlive()) {
        }



        Runnable runnableSet = () -> {
            System.out.println("== 세트 상품 포장 시작 ==");
            for (int i = 1; i <=5 ; i++) {
                System.out.println("세트 상품 포장 " + i + "/5");
            };
            System.out.println("== 세트 상품 포장 완료 == ");
        };
        Thread threadSet = new Thread(runnableSet);
        threadSet.start();
    }
}

        while (threadA.isAlive() || threadB.isAlive()) {
        }

 

돌고 있는지를 검사하는 것.

728x90
Comments