12장 퀴즈 runnableSet 질문
128
작성한 질문수 1
퀴즈 풀이 진행시
저는 _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 + " 상품 준비 완료 --");
}
}작성하신 코드와 비교해보시면 학습에 도움될 것 같아요 😊
감사합니다.
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
0
137
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
113
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
70
1
사고력 키우는 법이 어떤게 있나요?
0
92
2
getter setter
0
101
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
78
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
75
2
변수 이름짓는법
0
114
2
intelli J 실행오류
0
114
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
152
2
영상이 재생이 안됩니다.
0
167
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
115
2
응용이 어렵습니다.
0
203
2
IntelliJ가 보이지 않습니다.
0
182
3
JDK 버전 문의
0
128
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
120
2
Iterator 문의
0
104
1
코드 순서 문의
0
139
1
클래스 메소드
0
149
2
Quiz_05 관련 질문드립니다 !
0
117
2
다운로드가 안됩니다
0
165
2
다형성
0
119
2
HashMap
0
80
2





