본문 바로가기

java7

Java 멀티스레딩 입문: Thread, ExecutorService, CompletableFuture 자바 개발을 하다 보면 멀티스레딩이 필요한 순간이 반드시 와요. 외부 API를 여러 개 동시에 호출하거나, 무거운 작업을 백그라운드에서 처리하거나, 대용량 데이터를 병렬로 처리해야 할 때죠. 이번 포스팅에서는 Thread부터 시작해 현대적인 CompletableFuture까지 멀티스레딩의 발전 과정을 따라가볼게요.1단계: Thread - 가장 기본적인 방법Java의 멀티스레딩 출발점은 Thread 클래스예요. 직접 쓰는 경우는 드물지만 원리를 이해하는 데 도움이 돼요.// Runnable로 스레드 생성Thread thread = new Thread(() -> { System.out.println("별도 스레드에서 실행: " + Thread.currentThread().getName());});thr.. 2026. 4. 8.
Spring Boot 핵심 개념 정리: DI, IoC, AOP를 쉽게 이해해보자 들어가며Spring Boot를 처음 배울 때 가장 헷갈리는 게 DI, IoC, AOP 같은 개념들이에요. "용어는 알겠는데 왜 쓰는지 모르겠다"는 분들이 많아요. 이번 포스팅에서는 이 개념들을 아주 쉬운 예시로 풀어서 설명하고, 실제 Spring Boot 코드에서 어떻게 등장하는지 보여드릴게요.IoC: 제어의 역전이 뭔가요?IoC(Inversion of Control, 제어의 역전)는 쉽게 말해 "객체 생성과 관리를 개발자가 아닌 프레임워크가 한다"는 개념이에요.일반적으로는 개발자가 new UserService()처럼 직접 객체를 만들어요. IoC에서는 Spring이 알아서 객체를 만들고 관리해 줘요. 이렇게 Spring이 관리하는 객체를 Bean이라고 불러요.// ❌ IoC 없이 직접 생성public .. 2026. 4. 7.
JAVA 17 vs 21 vs 25 Java 17, 21, 25는 모두 장기지원 LTS(Long-Term Support)이다.각각에 대한 특징을 알아보고 싶어 작성하게 되었다. Java 17Java17은 안정성이 특징이다. Record와 상속 제한으로 불변 데이터 보장 및 무분별한 상속 차단하여 버그 발생을 최소화한다.Record 클래스 : DTO나 VO 만들 때 Getter, 생성자, toString(), equals(), hasCode()를 직접 만들지 않는다.beforepublic class UserDTO { private final String name; private final int age; public UserDTO(String name, int age) { this.name = name; .. 2026. 3. 4.
[JAVA] Recode - recode란? - 불변(immutable) 객체를 쉽게 생성할 수 있도록 하는 유형의 클래스 - JDK14에서 preview로 동작하여 JDK16에서 정식 스펙으로 포함되었음. recode 특징 1. equals와 hashcode, toString도 기본제공 (보일러 플레이트 코드) 2. final필드 recode를 사용하기 전 class를 사용했었는데, Student를 불변 객체를 생성하면 다음과 같이 생성했었다. public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() .. 2024. 4. 18.