반응형

reactive programming 3

리액티브 프로그래밍 시리즈 3 - 스레드 스케쥴링 (Thread scheduling)

이 포스트 시리즈는 Reactive Programming은 토비의 스프링 저자 이일민님의 리액티브 프로그래밍 유튜브 강좌를 공부하며 정리한 내용입니다. 1. 표준 Reactive streams의 문제점 지금까지 봐온 코드는 전부 하나의 스레드에서 동작한다. 이 코드를 실전에서 활용하기엔 그닥 유용하지 않은 코드이다. Publisher가 Blocking I/O를 사용하거나 데이터를 준비하는데 시간이 오래걸릴 경우 그걸 다 기다려야하기 때문이다. 반대로 Publisher의 데이터 생성은 굉장히 빠른데, Subscriber의 데이터 처리가 늦을 경우도 마찬가지다. Reactor에서는 Scheduler를 스레드 개념의 오퍼레이터를 활용해 이부분을 해결한다. 여기에서는 이 개념을 직접 구현한 코드를 보겠다. 아래..

리액티브 프로그래밍 시리즈 2 - Operators와 Reactor 맛보기

이 포스트 시리즈는 Reactive Programming은 토비의 스프링 저자 이일민님의 리액티브 프로그래밍 유튜브 강좌를 공부하며 정리한 내용입니다. 0. Tips Stream 인터페이스에 iterate 라는 메소드가 있다. 이 메소드는 어떠한 데이터 스트림을 쉽게 만들어 낼 수 있는 메소드이다. public List createSampleIntegerList(int count) { return Stream.iterate(1, e -> e + 1).limit(count).collect(Collectors.toList()); } 위 코드는 1 ~ 10까지 정수를 담은 리스트를 만든다. 핵심은 iterate(시작값, 값의 변화 함수) 메소드인데, 위 예시에서 시작값은 1, 변화는 1씩 증가시킨다라는 뜻이다..

리액티브 프로그래밍 시리즈 1 - Reactive Streams 개요

이 포스트 시리즈는 Reactive Programming은 토비의 스프링 저자 이일민님의 리액티브 프로그래밍 유튜브 강좌를 공부하며 정리한 내용입니다. 1. Iterable과 Observable의 차이점 Iterable과 Observable은 정반대의 동작방식으로 같은 목적의 문제를 해결한다. 1.1. Iterable 개념 자바에서 연속적인 데이터 구조를 표현할 때 List를 주로 사용한다. 그리고 주로 아래와 같이 for-each 구문을 사용한다. import java.util.List; import java.util.Arrays; List list = Arrays.asList(1, 2, 3, 4, 5); for (Integer i : list) { System.out.println(i); } 이는 L..