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

JAVA 39일차 (2023-07-17) 자바 프로그래밍_45. 스레드 풀_개인프로젝트 - 마트 관리 시스템

by prometedor 2023. 7. 17.
## 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

ㄴ 이제 자바에서 제공해주는 스레드를 사용하므로 해당 파일들은 삭제해도 됨

 

 

서버 실행 후 테스트

ㄴ 현재 스레드 이름이 출력되는 것을 확인할 수 있음