[개발] - 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
반응형