티스토리 뷰
ReactiveX
ReactiveX
는 효율적이고 직관적인 비동기 프로그래밍을 지원하기 위해 개발된 라이브러리이다. 다중 언어를 지원하여 다양한 언어에서 거의 유사한 문법으로 비동기 코드를 유연하게 작성할 수 있다. Java 언어에는RxJava
라는 이름으로 라이브러리를 제공한다.- Java 진영에는 비동기 프로그래밍을 가능하게 해주는 Future
인터페이스가 제공되지만 RxJava는 훨씬 유연하고 사람이 읽기 쉬운 문법을 제공한다.
라이브러리 종속성 추가
- 프로젝트 루트의 /build.gralde 파일에 아래 내용을 추가한다.
dependencies {
compile group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.9'
}
Observable
- 아래는 RxJava가 제공하는 대표적인 모델인
Observable
의 사용 예이다.
Observable
.just("Hello", "World")
.subscribeOn(Schedulers.io())
.map(word -> word.toUpperCase())
.repeat()
.subscribe(word -> {
log.info(word);
});
just()
메써드에는 비동기 처리할 출발점이 되는 원천 데이터를 명시한다.Observable
모델은 기본적으로 단일한 흐름의 싱글 쓰레드로 작동한다. 멀티 쓰레드로 작동시키려면.subscribeOn()
메써드로 멀티 쓰레드를 처리할 스케쥴러를 지정해줘야 한다.Schedulers.io()
는 CPU의 부하가 크지 않으면서 IO 블로킹이 발생하는 작업(주로 파일 또는 네트워크 작업)에 적합하다. 쓰레드 풀에 의해 작업에 필요한 만큼 알아서 쓰레드를 생성한다. 이 경우 작업을 처리할 쓰레드의 이름은 readScheduler-{thread_number}가 된다.map()
메써드는 데이터를 가공하는 역할을 한다. 위 예제에서는 원천 데이터를 모두 대문자로 가공되도록 작성했다.repeat()
메써드를 이용하면 동일한 작업을 무한으로 반복할 수 있다.subscribe()
메써드에는 최종적으로 가공된 데이터를 소비할 행위를 작성한다. 작성된 행위는 앞서 지정한 쓰레드에 의해 실행된다. 위 예제에서는 최종 가공된 문자열을 로그로 출력한다.
HELLO
WORLD
HELLO
WORLD
HELLO
WORLD
...
참고 글
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- spring
- jstl
- CentOS
- Eclipse
- 구동계
- jsp
- Spring MVC 3
- java
- 평속
- Docker
- Kendo UI Web Grid
- 로드 바이크
- 로드바이크
- DynamoDB
- Spring Boot
- 자전거
- 태그를 입력해 주세요.
- MySQL
- 알뜰폰
- Tomcat
- JavaScript
- Kendo UI
- node.js
- kotlin
- graylog
- jpa
- chrome
- bootstrap
- maven
- JHipster
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함