닉늠
183
2019-04-25 22:27:16
1
312

쓰레드 java.lang.Object 질문드립니다.


쓰레드 관련 공부하다가 API문서보고 monitor? 라는 생소한 용어를 접했습니다. 


인터넷에 찾아보니깐 lock, syncronized 를 사용하는 상호배제성 메커니즘으로만 이해했는데요.

이 monitor라는 논리적 개념?이 java.lang.Object의 notify, nofityAll, waiting 메서드와 관련있어보이는데 

왜 최상위 부모인 Object에 monitor를 연관지어 설계했는지 궁금합니다.


0
  • 답변 1

  • Deer Hunter
    328
    2019-04-26 02:59:23

    java thread 에서 monitor 는 여러 thread에서 동시에 접근(이용)하려는 경쟁 대상개체에 대한 점유권을 의미합니다.

    이에 따라 A thread가 대상개체에 대한 monitor를 획득하였을 경우, B thread가 이를 이용하기 위해서는 A thread가 작업을 마친 후 해당 monitor를 release 할때 까지 대기해야 합니다.

    현실 세계에 비유하자면 화장실 key에 비유할 수 있을 것 같습니다. 그 key를 가지고 있는 사람만이 사용할 수 있고, 사용을 마친 후 다른 사람에게 넘겨주어야 다른 사람이 사용 가능한 것처럼요.

    그리고 monitor와 object 객체의 연관성은, object 를 기반으로 생성된 객체에 synchronization을 적용할 수 있도록 하기 위한 java의 언어 설계 방향이라 생각됩니다.

    이에 따라 object 기반으로 생성된 객체 이용에 관련한 sync 관리가 가능해지는거죠.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.