development/java 3

[Java] CompletableFuture

이번 글에서는 Java 8부터 도입된 CompletableFuture에 대해 정리한다. CompletableFuture 란?자바 진영에는 비동기 처리를 위해 Java 5에 도입된 Future 가 존재한다. 하지만 Future는 예외 처리가 불가능하고, 다수의 비동기 작업을 조합할 수 없는 등 여러 문제점을 안고 있었다.이를 해결하고 보다 나은 개발을 위해 Java 8부터 CompletableFuture가 도입되었다고 보면 된다.CompletableFuture는 Future를 기반으로 보다 확장된 형태의 비동기 처리가 가능하도록 지원한다.다수의 비동기 작업을 조합 가능예외처리 혹은 콜백을 위한 메서드 사용 가능Future와 달리, Blocking 로직이 존재하지 않더라도 콜백 메서드를 통해 비동기에 대한 ..

development/java 2025.04.01

[Java] Stream - GroupingBy, FlatMap

Java 8 부터 도입된 Stream의 고급 활용인 GroupingBy와 FlatMap에 대해 정리한다.그에 앞서, Stream은 중간연산과 최종연산으로 구성되는데, Stream의 코드 흐름이 어떻게 진행되는지 간단히 살펴보겠다.public class StreamPractice { public static void main(String[] args) { List myList = new ArrayList(); myList.add("hello"); myList.add("world"); myList.add("!!!"); myList.stream() .filter(x -> { Syst..

development/java 2024.09.15

[Java] Generic 정리

안녕하세요. 이번 시간엔 그 동안 잘 모르고 사용해왔던 자바의 제네릭에 대해 정리해보려고 합니다. ※ 제네릭(Generic) 이란? 흔히 List나 Map 객체를 사용할 때 다음과 같이 코드를 작성합니다. List myList = new ArrayList(); Map myMap = new HashMap(); ArrayList와 HashMap 클래스를 살펴보면 클래스의 정의가 다음과 같은 형태로 되어 있습니다. // ArrayList.java public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable {...} // HashMap.java public class HashMap..

development/java 2023.08.02