본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 36일차 (2023-07-12) 자바 프로그래밍_여러 클라이언트 요청을 동시에 처리하기: Thread 적용_개인프로젝트 - 마트 관리 시스템

by prometedor 2023. 7. 12.
## 43. 여러 클라이언트 요청을 동시에 처리하기: Thread 적용

- 멀티태스킹의 메커니즘 이해
  - 프로세스 스케쥴링: Round Robin 방식, Priority + Aging 방식
  - 컨텍스트 스위칭 개념
  - 프로세스 복제(fork)방식과 스레드 방식 비교
  - 임계영역(Critical Region, Critical Section): 세마포어(Semaphore)와 뮤텍스(Mutex)
- 스레드의 구동원리와 사용법
  - 스레드의 라이프사이클 이해
  - Thread 클래스와 Runnable 인터페이스 사용법

 

ServerApp.java

ㄴ RequestAgentThread 클래스는 클라이언트의 요청을 처리하기 위한 스레드를 나타냄

ㄴ 이 클래스는 Thread 클래스를 상속하고 socket 멤버 변수를 가지며, 생성자와 run() 메서드를 오버라이딩함
ㄴ 생성자에서는 socket 객체를 받아서 멤버 변수에 저장함

ㄴ 이후 run() 메서드에서는 processRequest(socket) 메서드를 호출하여 클라이언트의 요청을 처리함

ㄴ 이 메서드 안에서 실제로 클라이언트와의 통신 및 작업을 수행하게 됨

=> RequestAgentThread 객체를 생성하고 start() 메서드를 호출하여 스레드를 시작하면, 해당 스레드는 별도의 실행 흐름으로 동작하며 클라이언트의 요청을 처리함

 

ServerApp.java

ㄴ serverSocket.accept() 메서드는 클라이언트의 연결을 기다리다가 클라이언트가 연결되면 해당 클라이언트와 통신할 수 있는 소켓(socket)을 반환함

    => 이를 RequestAgentThread의 생성자에 전달하여 새로운 RequestAgentThread 객체를 생성함
ㄴ start() 메서드를 호출하여 새로운 스레드를 시작함

    => 이렇게 생성된 RequestAgentThread 객체는 별도의 스레드에서 동작하며, 각각의 클라이언트와 통신하여 요청을 처리하게 됨