2025년 9월 1일 월요일(68일차)

Jeonghoon·2025년 9월 1일

jeonghoon's Study

목록 보기
69/128

🧵 Thread 개념 및 Spring 활용


🧠 Thread 기본

  • 프로세스 내에서 실행되는 작업 단위/흐름
  • 하나의 프로세스에는 최소 하나의 스레드 존재
  • Java 메인 메서드 실행 시, main 스레드 1개 작동
  • 사용처: 동기화/비동기화 등

🔀 Multi Thread

  • main 스레드 외에 추가 작업 스레드 생성
  • 병렬 처리 시 멀티스레드 활용

🌱 Spring Thread

구분설명
Spring기본 멀티스레드 환경 지원, 대규모 환경에 적합
Node.js단일스레드 환경 지원, 소규모 환경에 적합

🔄 Spring 동기화 / 비동기화

구분설명
동기화 (Synchronous)- 여러 스레드가 하나의 메서드를 호출할 때 요청 순서대로 처리
- 요청 순서 보장 O
- 메서드가 완료될 때까지 대기
- 주로 기본 CRUD 처리에 사용
비동기화 (Asynchronous)- 여러 스레드가 하나의 메서드를 동시에 실행 가능
- 요청 순서 보장 X
- @Async 애노테이션으로 비동기 요청 처리
- 메서드 반환 즉시 작업 시작, 백그라운드에서 실행
- 대량 데이터 연산, 이메일 전송, 푸시 알림 등에 적합

🛠️ 비동기 사용법

  1. @EnableAsync를 메인 클래스에 추가하여 비동기 기능 활성화
  2. Service 메소드에 @Async 추가하여 비동기 처리
  • 별도의 작업 스레드가 생성되어 백그라운드 실행

🧵 스레드풀(Thread Pool)

  • 제한된 개수의 스레드로 작업을 처리
  • 다중 스레드 생성 방지, 안정적인 병렬 처리 지원

Spring 커스텀 스레드풀 설정

  1. Config 폴더 내 ThreadPoolConfig 클래스 생성
  2. @Configuration 애노테이션 추가하여 스프링 빈 등록
  3. Executor 설정 후 @Bean 애노테이션 부착

⏰ Spring 스케줄링

단계내용
1@EnableScheduling을 메인 클래스에 추가하여 스케줄링 활성화
2자동 실행할 Service 메소드에 @Scheduled 추가

주요 속성별 설명 및 예시

속성설명예시
cron크론 표현식 기준 서버 시스템 날짜/시간에 따라 실행@Scheduled(cron = "0 0 10 * * 0,6") (토/일 오전 10시)
fixedRate이전 작업 시작 후 고정된 기간(밀리초)마다 실행@Scheduled(fixedRate = 10000) (10초마다)
fixedDelay이전 작업 완료 후 고정된 기간(밀리초)마다 실행@Scheduled(fixedDelay = 10000)

📝 주의사항

  • 스케줄링은 백그라운드 처리로 HTTP 응답 불가
  • 필요 시 WebSocket 등 연결 유지 방식으로 응답 처리 권장

0개의 댓글