Java/모던 자바 인 액션4 Java Optional Optional 개발 배경 자바로 프로그램을 개발하면서 NullPointerException을 겪지 않은 사람은 없다. public class Person { private Car car; public Car getCar() { return this.car; } } public class Car { private Insurance insurance; public Insurance getInsurance() { return this.insurance; } } public class Insurance { private String name; public String getName() { return this.name; } } Null을 체크하는 방법 public String getInsuranceName(P.. 2023. 6. 14. [모던 자바 인 액션] 리액티브 프로그래밍 리액티브 프로그래밍 리액티브 프로그래밍에서는 다양한 시스템과 소스에서 들어오는 데이터 항목 스트림을 비동기적으로 처리하고 합쳐서 문제를 해결한다. 이런 애플리케이션은 발생한 데이터 항목을 바로 처리함으로 사용자에게 높은 응답성을 제공한다. 1. 리액티브 매니패스토 리액티브 매니패스토reactive manifesto(https://www.reactivemanifesto.org)에 리액티브 애플리케이션과 시스템 개발의 핵심 원칙을 정의한다. 반응성(responsive) 일정하고 예상할 수 있는 반응시간을 제공한다. 회복성(resilient) 장애가 발생해도 시스템은 반응해야 한다. 탄력성(elastic) 작업 부하가 발생하면 자동으로 관련 컴포넌트에 할당된 자원 수를 늘린다. 메시지 주도(Message-dr.. 2023. 2. 4. [모던 자바 인 액션] CompletableFuture : 안정적인 비동기 프로그래밍 CompletableFuture: 안정적 비동기 프로그래밍 1. Future의 단순 활용 비동기 계산을 모델링하는 데 Future를 이용할 수 있으며, Future는 계산이 끝났을 때 결과에 접근할 수 있는 참조를 제공한다. 시간이 걸릴 수 있는 작업을 Future 내부로 설정하면 호출자 스레드가 결과를 기다리는 동안 다른 유용한 작업을 수행할 수 있다. Future는 저수준에 스레드에 비해 직관적으로 이해하기 쉽다는 장점이 있다. Future를 이용하려면 시간이 오래 걸리는 작업을 Callable 객체 내부로 감싼 다음에 ExecutorService에 제출해야 한다. ExecutorService executor = Executors.newCachedThreadPool(); Future future = .. 2023. 1. 20. [모던 자바 인 액션] 15장 - CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 동시성을 구현하는 자바 지원의 진화 처음 Runnable, Thread를 동기화된 클래스와 메서드를 이용해 잠갔다. Java5 ExecutorService 인터페이스, Callable, Future Java7 분할 정복, 포크/조인을 지원하는 java.util.concurrent.RecursiveTask Java8 스트림, 람다에 기반한 병렬 프로세싱 Java9 분산 비동기 프로그래밍을 명시적으로 지원 발행-구독 프로토콜(Flow API) Executor와 스레드 풀 자바5는 Executor 프레임워크와 스레드 풀을 통해 스레드의 성능을 고도화 함. 스레드의 문제 스레드를 만들고 종료하는 비용은 비싸다. 따라서 기존 스레드가 실행되는 상태.. 2022. 12. 30. 이전 1 다음