TCP 네트워킹
2022. 5. 7. 15:57ㆍjava/java
*스레드 병렬 처리
1) 블로킹(대기 상태)가 되는 메소드
- ServerSocket의 accept()
- Socket 생성자 또는 connect()
- Socket의 read(), write()
2) 병렬 처리의 필요성
- 스레드가 블로킹되면 다른 작업을 수행하지 못한다.
-1) 입출력 할 동안 다른 클라이언트의 연결 요청을 수락하지 못한다.
-2) 입출력 할 동안 다른 클라이언트의 입출력을 하지 못한다.
- UI 생성/변경 스레드에서 블로킹 메소드를 호출하지 않도록 한다.
-1) UI 생성 및 변경이 안되고 이벤트 처리가 안된다.
3) 스레드 병렬처리
4) 스레드풀을 사용해서 스레드 수 관리
- 스레드풀은 스레드 수를 제한해서 사용하기 때문에 갑작스런 클라이언트의 폭증은
- 작업큐의 작업량만 증가시킬 뿐 수는 변함이 없으므로 서버 성능은 완만히 저하된다.
- 다만 대기하는 작업량이 많기 때문에 개별 클라이언트에서 응답을 늦게 받을 수 있다.