Future와 CompletableFuture의 차이점
Future는 비동기 처리 결과를 얻기 위해 주기적으로 상태를 확인해야 하며, 이로 인해 CPU 사용률이 증가할 수 있습니다.
ExecutorService executorService = Executors.newFixedThreadPool(10);
Future<String> asyncResult = executorService.submit(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStac ...
7월 17일 23:58에 게시됨
Java 멀티스레딩 구현 방식과 스레드 풀 및 ThreadLocal 시스템 이해
Java에서 멀티스레딩은 애플리케이션의 병렬 처리를 위한 핵심 기술입니다. 기본적으로 Java 스레드는 명시적인 관리가 가능하며, C++과 달리 모든 스레드에 대해 반드시 join을 선언해야 하는 제약에서 비교적 자유롭습니다. 본 아티클에서는 Java에서 스레드를 생성하는 다양한 방법과 스레드 풀 활용법, 그리고 데이터 격리를 위한 ThreadLocal에 대해 다룹니다.
1 ...
7월 4일 03:13에 게시됨
Java ThreadPoolExecutor 고성능 트레이락과 동시성 제어
Executor 프레임워크 핵심 메커니즘
ThreadPoolExecutor는 작업 제출과 실행을 분리하는 생산자-소비자 패턴을 구현한다. 5가지 핵심 구성요소는 다음과 같다.
corePoolSize: 유휴 상태라도 제거되지 않는 기본 스레드 수
maximumPoolSize: 부하 급증 시 확장 가능한 상한선
keepAliveTime: corePoolSize 초과 생성된 스레드의 유휴 대기 시간
workQueue: Runnable 객체 ...
7월 2일 16:54에 게시됨
Spring Boot 비동기 작업 처리: @EnableAsync와 Future 패턴 적용
Spring Boot는 비동기 작업을 매우 효율적으로 지원합니다. 이번 글에서는 @EnableAsync와 @Async 어노테이션을 활용하여 비동기 기능을 활성화하고, 단방향(Fire-and-Forget) 패턴과 요청-응답(Request-Reply) 패턴을 구현하는 방법을 살펴봅니다.
비동기 기능 활성화
Spring Boot 환경에서 비동기 처리를 사용하려면 먼저 설정 클래스에 @EnableAsync 어노테이션을 추가 ...
6월 11일 16:34에 게시됨
Java 멀티스레드 제어: 순차, 교차, 동시 실행 패턴 가이드
멀티스레드 환경에서 스레드 실행 순서를 제어하는 것은 동시성 프로그래밍의 핵심 과제입니다. 이 문서에서는 Java에서 제공하는 다양한 동기화 도구를 활용하여 스레드 실행 순서를 제어하는 방법을 세 가지 시나리오로 나누어 설명합니다.
1. 교차 실행 (Alternating Execution)
여러 스레드가 정해진 순서대로 번갈아가며 실행되는 패턴입니다.
1.1 CompletableFutur ...
6월 9일 20:31에 게시됨
Java CompletableFuture를 활용한 효율적인 비동기 프로그래밍 및 작업 조합
기존 Future 인터페이스의 한계
Java의 Future 인터페이스는 비동기 작업의 결과를 나타내고 관리하는 데 사용됩니다. FutureTask와 Callable을 결합하면 메인 스레드와 별도로 실행되는 백그라운드 작업을 생성할 수 있습니다. 그러나 기존 Future는 다음과 같은 명확한 한계를 가집니다.
1. get() 메서드의 블로킹 문제
get() 메서드를 호출하면 작업이 완료될 때까지 ...
6월 8일 01:05에 게시됨