작성
·
76
0
퀴즈 풀이 진행시
저는 _03_JOIN 에서 사용한 것 처럼 클래스 내부에 함수를 만들어서 호출해서 사용하는 방식을 했습니다.
코드
package chap_12;
public class _Quiz_12 {
public static void main(String[] args) {
Pkg pkg1 = new Pkg();
Pkg pkg2 = new Pkg();
Runnable a = new Runnable() {
@Override
public void run() {
String name = "A";
int number = 1;
for (int i = 1; i <= 5; i++) {
pkg1.pack("A");
}
System.out.println(" -- A 상품 준비 완료 -- ");
}
};
Runnable b = new Runnable() {
@Override
public void run() {
String name = "B";
int number = 1;
for (int i = 1; i <= 5; i++) {
pkg2.pack("B");
}
System.out.println(" -- B 상품 준비 완료 -- ");
}
};
Thread pkgA = new Thread(a);
Thread pkgB = new Thread(b);
pkgA.start();
pkgB.start();
try {
pkgA.join();
pkgB.join();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
Dmz();
}
public static void Dmz() {
for (int i = 1; i <= 5; i++) {
System.out.println("세트 상품 포장 시작 " + i + "/5");
}
System.out.println(" == 세트 상품 포장 완료 == ");
}
}
class Pkg {
public int number = 1;
public void pack(String name) {
// 직원 1 : 3번방 청소 완료
System.out.println(name + "상품 준비 " + number + "/5");
number++;
}
}
영상에서는 이전과 다르게 Runnable 인터페이스를 구현하여서? 하는걸 보았습니다
결과는 똑같이 나오는데 기능적으로나 프로그램적으로 어떠한 차이가 있는지 알려주시면 감사하겠습니다.
답변 1
1
안녕하세요?
Runnable 내에서 '상품 준비' 를 출력하는 부분을 Pkg 클래스 내에서 처리해 주셨네요 😊
이렇게 하셔도 동작에 있어서는 차이가 없어 보입니다. 다만 number 를 인스턴스 변수로 선언할 필요 없이 pack(String name, int number) 와 같이 직접 받아서 출력해도 되겠네요. 문제 풀이 잘 해주셨습니다.
그런데 이왕이면 Pkg 클래스를 만드신 김에 Runnable 인터페이스를 직접 구현하셔서 클래스 내에서 모든 처리를 하게끔 하는 편이 더 좋을 것 같아요! 아래는 수정된 코드입니다. 상품이 A 인지 B 인지 정도만 받아서 클래스 내에서 처리하도록 하였습니다.
package chap_12;
public class _Quiz_12 {
public static void main(String[] args) {
Pkg pkg1 = new Pkg("A");
Pkg pkg2 = new Pkg("B");
Thread pkgA = new Thread(pkg1);
Thread pkgB = new Thread(pkg2);
pkgA.start();
pkgB.start();
try {
pkgA.join();
pkgB.join();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
Dmz();
}
public static void Dmz() {
for (int i = 1; i <= 5; i++) {
System.out.println("세트 상품 포장 시작 " + i + "/5");
}
System.out.println(" == 세트 상품 포장 완료 == ");
}
}
class Pkg implements Runnable {
private String product;
public Pkg(String product) {
this.product = product;
}
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println(product + " 상품 준비 " + i + "/5");
}
System.out.println(" -- " + product + " 상품 준비 완료 --");
}
}
작성하신 코드와 비교해보시면 학습에 도움될 것 같아요 😊
감사합니다.
도움이 되었습니다 수정도 해주시고 감사합니다 남은 강의도 열심히 보겠습니다!!
감사합니다!!