mvc api 호출 시 thread 상태에 대해서 궁금한 점이 있습니다..
스프링에서 api를 호출할 때 어떤 일이 발생하는지 RestTemplate 사용하여 테스트를 해보았습니다. 제 예상으로는 api를 호출하게 되면 io 작업이 발생하여 컨텍스트 스위칭 작업이 발생하여 호출한 쓰레드는 응답이 올 때 까지 blocking 상태를 유지할 것이라 판단하였습니다. 하지만 VisualVM을 사용하여 모니터링 해본 결과 park 상태로 유지되던 쓰레드가 running상태로 바뀌며 해당 api의 응답이 올 때까지 running상태로 유지되고 있음을 확인하였습니다. (응답 속도가 빨라 5초간 sleep 후 응답하는 api를 호출) 실제로 block이 일어나지 않은 것인지 아니면 실제로 컨텍스트 스위칭이 발생한 것은 커널레벨 쓰레드 쪽이라 visualVM이 이를 캐치하지 못한것인지.. (하지만 자바에서는 유저레벨 쓰레드와 1대1 매칭이 된다고 알고 있는데.. 유저 레벨 쓰레드에도 영향이 있을 것이라 생각합니다.) 머리 속이 너무 혼란스럽네요ㅜㅜ 어떤 부분을 공부하면 될지 키워드라도 알려주실 수 있나요?
Loading...