편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.06.21

    왜 wait() 메소드는 항상 synchronized 블록 안에 있는거죠?


    Object.wait()메소드를 발생시키려면 메소드가 반드시 synchronized 블록 안에 있어야 한다는 것은 모두가 아는 사실입니다. 그렇지 않으면 IllegalMonitorStateException이 발생하겠죠. 왜 이러한 제한을 두는 이유가 무엇이죠? wait()메소드가 monitor를 release하는 것은 알고 있습니다만, 왜 synchronized 블록을 따로 만든 후에 wait()메소드를 호출하는 방법을 통해서 명시적으로 monitor를 얻어야 하는 것인가요?

    wait()을 동기화 블럭 외부에서 실행한다면, 즉 의미를 유지한 채, 호출 스레드를 지연 시킬때 발생하는 잠재적 위험은 무엇입니까?

  • 프로필 조대훈님의 편집
    날짜2016.07.27

    왜 wait() 메소드는 항상 synchronized 블록 안에 있는거죠?


    Object.wait()메소드를 발생시키려면 메소드가 반드시 synchronized 블록 안에 있어야 한다는 것은 모두가 아는 사실입니다. 그렇지 않으면 IllegalMonitorStateException이 발생하겠죠. 왜 이러한 제한을 두는 이유가 무엇이죠? wait()메소드가 monitor를 release하는 것은 알고 있습니다만, 왜 synchronized 블록을 따로 만든 후에 wait()메소드를 호출하는 방법을 통해서 명시적으로 monitor를 얻어야 하는 것인가요?

    wait()을 동기화 블럭 외부에서 실행한다면, 즉 의미를 유지한 채, 호출 스레드를 지연 시킬때 발생하는 잠재적 위험은 무엇입니까?