인프런 커뮤니티 질문&답변
답변 2
1
나도코딩
지식공유자
room.clean("직원 1");이라고 띄어쓰기가 들어가서 그런 것 같네요 ^^
그러다보니 숫자 1 과 함께 출력되어서 11, 12 처럼 보이는 것입니다. 지금 코드에서는 다음과 같이 코드를 바꿔보시면 되겠네요. 직원2 도 동일하게 해주시구요.
room.clean("직원1 ");0
lsu1073
질문자
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();
}
}





코드는 스레드 객체 에서 java.lang만 빼고 똑같은데 결과가 왜 10이 넘는 숫자가 나오나요? java.lang에 영향인가요
왜 1번방이 아니라 11번부터 시작할까요? 코드도 맞게 적었는데 ㅠㅠ
헐 이런 부분까지 생각 해야되다니... 컴퓨터 언어는 정말 세심의 필요성을 깨닫게 되네요
답변 감사합니다~~