## 45. 스레드 재사용하기 : 자바에서 제공하는 스레드풀(thread pool) 사용
- Excutors/ExcutorService 사용법
ServerApp.java
ㄴ 자바의 스레드 풀을 준비하고 10개의 스레드로 제한함
=> ExecutorService 이용
ㄴ ExecutorService 인터페이스는 스레드 풀을 관리하고 작업을 처리하기 위한 인터페이스임
ㄴ newFixedThreadPool(10) 메서드는 크기가 10인 고정된 개수의 스레드를 가진 스레드 풀을 생성함
ㄴ 이렇게 생성된 스레드 풀은 최대 10개의 스레드를 유지하며, 스레드가 비어있을 때는 대기 중인 작업을 처리할 수 있음
=> 스레드 풀을 사용하면 작업을 별도의 스레드에서 비동기적으로 실행할 수 있으며, 스레드 생성 및 관리에 대한 부담을 줄일 수 있음
=> 작업을 스레드 풀에 제출하면 해당 작업은 이용 가능한 스레드 중 하나에서 실행되며, 작업이 완료되면 스레드는 다시 사용 가능한 상태가 됨
ServerApp.java
ㄴ threadPool.execute() 메서드를 사용하여 작업을 스레드 풀에 제출하도록 함
ㄴ execute() 메서드는 주어진 작업(Runnable 객체)을 스레드 풀에 제출하여 비동기적으로 실행하도록 함
ServerApp.java
ㄴ 익명 클래스로 구현된 Runnable 객체의 run() 메서드에서는 processRequest(socket) 메서드를 호출하도록 함
=> 이를 통해 클라이언트의 소켓을 처리하는 작업이 비동기적으로 실행됨
ㄴ processRequest() 메서드는 socket 객체를 매개변수로 받아 해당 소켓을 처리함
ServerApp.java
=>
ServerApp.java
ㄴ 컴파일러는 이러한 문장으로 변환시킴
ServerApp.java
ㄴ 현재 스레드 이름을 출력하기 위해 코드 추가
ServerApp.java
ㄴ 이제 자바에서 제공해주는 스레드를 사용하므로 해당 파일들은 삭제해도 됨
서버 실행 후 테스트
ㄴ 현재 스레드 이름이 출력되는 것을 확인할 수 있음
'네이버클라우드 > JAVA 웹 프로그래밍' 카테고리의 다른 글
JAVA 40일차 (2023-07-18) 자바 프로그래밍_DBMS_JDBC, ODBC / SQL - DDL (0) | 2023.07.19 |
---|---|
JAVA 39일차 (2023-07-17) 자바 프로그래밍_DBMS (0) | 2023.07.17 |
JAVA 39일차 (2023-07-17) 자바 프로그래밍_스레드 풀 사용법 (0) | 2023.07.17 |
JAVA 38일차 (2023-07-14) 자바 프로그래밍_스레드 재사용하기 : 스레드풀(thread pool) 구현_개인프로젝트 - 마트 관리 시스템 (0) | 2023.07.16 |
JAVA 38일차 (2023-07-14) 자바 프로그래밍_스레드, 임계영역(Critical Region, Critical Section) (0) | 2023.07.14 |