비동기 구현 예제 1) Runnable @FunctionalInterface public interface Runnable { public abstract void run(); } 매개변수, 리턴값이 없는 로직 ExecutorService es = Executors.newCachedThreadPool(); /** 별도의 스레드로 실행해보자. */ es.execute(() -> { // 매개변수, 리턴값이 없는 Runnable 구현 try { Thread.sleep(2000); } catch (InterruptedException e) { throw new RuntimeException(e); } log.info("Async"); // return "Hello"; // Runnable 은 리턴이 없다. }..
subscribe()의 과정을 별도 스레드로 수행 1) publisher 생성 Publisher pub = sub -> { sub.onSubscribe(new Subscription() { @Override public void request(long n) { log.debug("request()"); sub.onNext(1); sub.onNext(2); sub.onNext(3); sub.onNext(4); sub.onNext(5); sub.onComplete(); } @Override public void cancel() { } }); }; // pub 2) Subscriber 생성 subOnPub.subscribe(new Subscriber() { @Override public void onSubsc..
Pub/Sub 1) Publisher 생성 Publisher pub = iterPub(Stream.iterate(1, a -> a + 1) .limit(10) .collect(Collectors.toList())); iterPub() private static Publisher iterPub(List iter) { Publisher pub = new Publisher() { // Publisher 의 구현해야하는 메서드 @Override public void subscribe(Subscriber
Iterable 리스트를 생성해보자. // 리스트로 받는 방법 List list = Arrays.asList(1, 2, 3, 4, 5); List 객체는 Collection을 상속한다. public interface List extends Collection { Collection 객체는 Iterable을 상속한다. 그러므로 List 타입은 Iterable의 서브타입이라고 할 수 있다. public interface Collection extends Iterable { Iterable은 아래와 같이 for-each 문에서 데이터를 순회할 수 있다. for (Integer i : list) { // for-each System.out.println(i); } Iterable 객체를 직접 만들어보자. ▶ 1..
Reactuve Streans를 들어가기 이전 Reactive Streams 포스팅을 들어가기전, Reactive Spring의 개념에 대해 알아야한다. 포스팅 바로가기 : devfunny.tistory.com/314?category=820617 Reactive Spring / Reactive Programming Reactive 의 예시 Reactive의 뜻은 반응형이다. 리액티브를 이해하기 위해서, 하나의 상황을 예로 들어보자. 한 어플리케이션에서 시간당 평균 약 1,000명의 사용자가 방문한다고 가정해보자. 톰캣을 devfunny.tistory.com Reactive Streams Reactive Streams란 라이브러리나 프레임워크에 상관없이 데이터 스트림을 비동기로 다룰 수 있는 공통 메커니즘..
리액티브 프로그래밍의 관찰자 패턴 관찰자 패턴은 리액티브 프로그래밍의 기초이다. 관찰자 패턴은 관찰자라고 불리는 자손의 리스트를 가지고 있는 주체(subject)를 필요로한다. 주체는 자신의 메서드 중 하나를 호출하여 관찰자에게 상태 변경을 알린다. 관찰자 패턴은 이벤트 처리를 기반으로 시스템을 구현할 때 필수적이다. MVC(Model-View_Controller) 패턴의 중요한 부분으로, 거의 모든 UI 라이브러리가 내부적으로 이 패턴을 사용한다. 관찰자 패턴의 구현 Observer(관찰자)는 Subject(주체)에 등록되고 Subject 로부터 알림을 받는다. 위에서 설명한 상태변경을 알린다. 라는 말이 이에 해당한다. Observer (관찰자) 2개 Subject (주체) 1개 Subject 인터페..