[Java] 포스트맨(Postman)사용시 동시 요청이 되는 이유?

서버 API 작업 중 A요청 후 디버깅을 하는 와중에 B요청을 했더니 B요청에 대한 응답을 바로 받을 수 있었다.

A요청에 대한 응답을 받기 전인데 B응답과 요청을 어떻게 처리될 수 있었을까?

멀티쓰레드가 답이다.

내가 만든 서버API는 스프링프레임워크로 스프링프레이워크는 멀티스레드를 지원한다. 그래서 특별한 설정을 하지않아도 한 요청에 대한 응답을 받기도 전에 다른 요청을 보내고 응답도 받을 수 있었던 것!
간단하게 멀티쓰레드의 장점은 작업 분리로 효율성 증대이고 단점은 제어의 어려움이 있다.

블로그 글 멀티스레드프로그래밍1 : 개념, 용어정리, 스래드 상태와 제어을 보면 더 자세히 알수있다.




멀티스레드말고 싱글스레드를 쓰기도 하는가?

싱글스레드하면 떠오르는 건 node.js이다. 사실 node.js는 싱글스레드도 지원하면서 멀티스레드도 지원한다. 이에 대해서는 블로그글 vodkamitlime님의 NodeJS 는 Single Thread 일까? Multi Thread 일까?을 보면 자세히 알수있다.

언뜻보기에는 멀티스레드가 좋은데 왜 싱글스레드를 지원할까?
자바스크립트가 싱글스레드를 지원하기 때문이다.

싱글스레드를 사용하는 이유는 싱글스레드만의 장점이 있기때문이다.




싱글스레드 장단점

  • 장점
    • 자원 접근에 대한 동기화를 신경쓰지 않아도 된다
    • 작업전환(context switch) 작업을 요구하지 않는다.
  • 단점
    • 여러개의 CPU를 활용하지 못한다.