• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

12장 동기화 강의

23.11.23 21:54 작성 조회수 154

1

 코드는 스레드 객체 에서 java.lang만 빼고 똑같은데 결과가 왜 10이 넘는 숫자가 나오나요? java.lang에 영향인가요

답변 2

·

답변을 작성해보세요.

1

room.clean("직원 1");

이라고 띄어쓰기가 들어가서 그런 것 같네요 ^^

그러다보니 숫자 1 과 함께 출력되어서 11, 12 처럼 보이는 것입니다. 지금 코드에서는 다음과 같이 코드를 바꿔보시면 되겠네요. 직원2 도 동일하게 해주시구요.

room.clean("직원1 ");
lsu1073님의 프로필

lsu1073

질문자

2023.11.27

헐 이런 부분까지 생각 해야되다니... 컴퓨터 언어는 정말 세심의 필요성을 깨닫게 되네요

답변 감사합니다~~

image

0

안녕하세요?

의도하지 않은 동작이 수행된 것 같아요. 작성하신 코드 전체를 적어주시면 확인 후 도움 드리겠습니다 😊

감사합니다.

lsu1073님의 프로필

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();
    }
}
lsu1073님의 프로필

lsu1073

질문자

2023.11.27

image왜 1번방이 아니라 11번부터 시작할까요? 코드도 맞게 적었는데 ㅠㅠ