본문 바로가기
Spring

[Java] 멀티스레드 사용하기

by 두유_ 2024. 6. 14.

Java Multi Thread


멀티 스레드 설정 파일

AsyncConfig.class

@Configuration
@EnableAsync
public class AsyncConfig {

    @Bean(name = "payworkExecutor")
    public ThreadPoolTaskExecutor payworkExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(5);
        executor.setQueueCapacity(10);
        executor.setThreadNamePrefix("payworkExecutor-");
        executor.initialize();
        return executor;
    }
}

 


멀티 스레드 구현

Calc.class

@Qualifier("payworkExecutor")
private final ThreadPoolTaskExecutor payworkExecutor;

public void calculate(List<Dto> dtoList) {
    for (Dto dto : dtoList) {
        payworkExecutor.execute(() -> {
            mapper.calc(dto);
            throwIfCalculationFailed(dto);
        });
    }
}

 


JAVA 멀티 스레드 구현 - execute() 메서드와 submit() 메서드

execute() 메서드

- Execute() 메서드는 리턴값이 없는 Runnable 객체를 작업큐에 저장한다.

- 작업 처리 도중 예외가 발생하면 스레드가 종료되고 해당 스레드를 스레드 풀에서 제거한 뒤 다른 작업 처리를 위해 새로운 스레드를 생성한다.

 

submit() 메서드

- 작업 처리 도중 예외가 발생해도 스레드가 종료되지 않고 해당 스레드를 다음 작업을 위해 재사용한다.

- 스레드 생성으로 인한 오버 헤드를 줄일 수 있다.


Connection Pool 최대 갯수 설정

application.yml

 

    hikari:
      maximumPoolSize: 100

Reference

https://foot-develop.tistory.com/59
https://dev-coco.tistory.com/186

'Spring' 카테고리의 다른 글

[Spring Boot] HikariCP log 출력하기  (0) 2024.09.11
[Spring boot] Swagger 설정하기 (gradle)  (0) 2024.09.10
[Spring Boot] Scheduler 사용법  (0) 2024.06.12