ExecutorService의 이해
·
Java
ExecutorService와 Future, CompletableFuture의 각각의 특징과 기능을 학습후 정리하는 글입니다. ExecutorService는 Java의 java.util.concurrent 패키지에 포함된 인터페이스로, 비동기 작업의 실행을 관리하는 프레임워크를 제공합니다. 이를 통해 직접 스레드를 생성하고 관리하는 복잡성을 줄일 수 있습니다.  주요 특징  스레드 풀 관리: ExecutorService는 내부적으로 스레드 풀을 사용하여 작업을 효율적으로 관리합니다. 이를 통해 스레드 생성과 종료에 따른 오버헤드를 줄이고 시스템 자원을 효율적으로 활용할 수 있습니다.작업 제출 및 관리: submit() 메서드를 통해 Callable 또는 Runnable 작업을 제출할 수 있으며, 제출된 ..
Thread Local 의 동작원리
·
Java
개요  Java에서 ThreadLocal을 사용할 때 보통 아래와 같이 new 연산자를 통해 객체를 생성합니다.private static final ThreadLocal THREAD_LOCAL = new ThreadLocal(); 처음에는 ThreadLocal 객체가 데이터를 저장하는 저장소 역할을 한다고 생각했지만, 코드를 분석해본 결과 ThreadLocal은 저장소가 아니라 각 스레드가 가지고 있는 저장소의 key 역할을 수행한다는 것을 알게 되었습니다. ThreadLocal의 set() 메서드 분석public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != ..
Spring Boot 엑셀 업로드 기능 개발기
·
Java
이번 프로젝트에서 엑셀 업로드를 통한 데이터 저장 기능을 개발하게 되었습니다.본 글에서는 엑셀 파일을 효과적으로 읽고 객체로 변환하여 저장하는 과정에 대해 설명하고자 합니다. 요구 사항신규 프로젝트에서는 사용자가 엑셀 파일을 업로드하여 데이터를 입력할 수 있는 기능이 필요했습니다.이를 통해, 대량의 데이터를 보다 쉽게 등록하고 관리할 수 있도록 하는 것이 목표였습니다. 엑셀 업로드 설계 방향엑셀 업로드 기능을 개발하면서 가장 중요하게 고려한 점은 재사용성과 확장성을 극대화하는 것이었습니다.즉, 엑셀 데이터를 원하는 객체 형태로 변환하는 과정을 직관적이고 효율적으로 설계하는 것이 핵심이었습니다.이를 위해 애너테이션 기반 접근 방식을 채택하여, DTO와 엑셀 컬럼을 자동으로 매핑할 수 있도록 구현했습니다. ..