본문 바로가기
Rx

Observable -8 (fromFuture함수)

by 봄석 2018. 12. 23.

본 내용은 필자가 학습한 내용을 정리하는 내용입니다.

대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!

RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에

유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc=


 Observable의 팩토리 함수 구분

팩토리함수 

함수 

RxJava 1.x의 기본 팩토리 함수 

create(),just(),from() 

RxJava 2.x의 기본 팩토리 함수  

fromArray(),fromlterable(),fromCallable(),fromFuture(),

fromPublisher() 

기타 팩토리 함수 

interval(),range(),timer(),defer() 




fromFuture()함수

Future 인터페이스 역시 자바 5에서 추가된 동시성 API로 비동기 계산의 결과를 구할 때 사용합니다. 보통 Executor 인터페이스를 구현한 클래스에 Callable 객체를 인자로 넣어 Future객체를 반환합니다. get()메소드를 호출하면 Callable 객체에서 구현한 계산 결과가 나올 때 까지 블로킹 됩니다.



fromFuture()함수를 활용한 예


void basic(){
        Future<String> future =Executors.newSingleThreadExecutor().submit(()->{
            Thread.sleep(1000);
            return "Hello Future";
        });
        Observable source =Observable.fromFuture(future);
        source.subscribe(System.out::println);


Executors 클래스의 newSingleTreadExecutor()메소드에 람다 표현식의 Callable 객체를 인자로 넣었습니다. Callable 인터페이스의 call() 메소드는 인자가 없으므로 ()->{}형태로 나타내며

1초를 쉬고 'Hello Future'를 반환합니다.

이렇게 만들어진 Future 객체를 fromFuture()함수에 인자로 넣습니다.



Executors 클래스는 단일 스레드 실행자(SingleTreadExecutors)뿐 아니라 다양한 

스레드풀(FixedTreadPool,CachedThreadPool)을 지원합니다.

하지만 RxJava는 위와 같은 실행자를 활용하기 보다 Rxjava에서 제공하는 스케줄러를 활용하도록 권장합니다.




fromCallable과 다른점은 결과값을 받을때까지 블로킹 한다는것!

댓글