-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
12장 동기화 강의
23.11.23 21:54 작성 조회수 154
1
코드는 스레드 객체 에서 java.lang만 빼고 똑같은데 결과가 왜 10이 넘는 숫자가 나오나요? java.lang에 영향인가요
답변을 작성해보세요.
1
나도코딩
지식공유자2023.11.27
room.clean("직원 1");
이라고 띄어쓰기가 들어가서 그런 것 같네요 ^^
그러다보니 숫자 1 과 함께 출력되어서 11, 12 처럼 보이는 것입니다. 지금 코드에서는 다음과 같이 코드를 바꿔보시면 되겠네요. 직원2 도 동일하게 해주시구요.
room.clean("직원1 ");
0
lsu1073
질문자2023.11.26
package chap_12;
import chap_12.clean.Room;
public class _05_Synchronization {
public static void main(String[] args) {
//방 순서 대로 청소
Room room = new Room();
Runnable cleaner1 = new Runnable() {
@Override
public void run() {
System.out.println("직원1 청소 시작");
for (int i = 1; i <= 5; i++) {
room.clean("직원 1");
}
System.out.println("---직원1 청소 완료---");
}
};
Runnable cleaner2 =() -> {
System.out.println("직원2 청소 시작");
for (int i = 1; i <= 5; i++) {
room.clean("직원 2");
}
System.out.println("---직원2 청소 완료---");
};
java.lang.Thread cleanThread1 = new java.lang.Thread(cleaner1);
java.lang.Thread cleanThread2 = new java.lang.Thread(cleaner2);
cleanThread1.start();
cleanThread2.start();
}
}
답변 2