Par défault, les flux fonctionne sur le `thread` courant, c'est-à-dire le `thread` qui a souscrit le flux. Il s'agit du `thread` appelé `main` dans les exercices précédents. La majorité de nos exemples était des traitements synchrones, excepté certains exercices. Lorsqu'une opération a de la latence, l'émission synchrone impose cette latence au `thread` qui a souscrit.
Nous allons étudier les émissions de flux asynchrone, une émission asynchrone arrive quand un producteur émet un flux dans un `thread` différent du `thread` qui a souscrit.
Par défaut, les flux fonctionne sur le `thread` courant, c'est-à-dire le `thread` qui a souscrit le flux. Il s'agit du `thread` appelé `main` dans les exercices précédents. La majorité de nos exemples était des traitements synchrones, excepté certains exercices. Lorsqu'une opération a de la latence, l'émission synchrone impose cette latence au `thread` qui a souscrit.
Nous allons étudier les émissions de flux asynchrone, une émission asynchrone arrive quand un producteur émet un flux dans un `thread` différent du `thread` qui a souscrit.
Les **Scheduler** de RX Java peuvent changer le comportement des `thread` d'émission et de souscription. Par exemple, nous pouvons choisir le `thread` qui émet le flux de données. Un **Scheduler** est très similaire à un **Executor** du JDK.
RX Java gére la concurrence à notre place avec deux méthodes : `subscribeOn` pour changer le `thread` de l'émetteur et `observerOn` pour changer le `thread` du consommateur.
RX Java gère la concurrence à notre place avec deux méthodes : `subscribeOn` pour changer le `thread` de l'émetteur et `observerOn` pour changer le `thread` du consommateur.
### G. Level 7
Testing
RX Java fournit un opérateur appelé `test` permettant de retourner une instance **TestObserver**
Cet utilitaire permet de vérifier différents types de résultat attendu
- Que le consommateur a bien été souscrit
- Que l'événement de fin du flux a bien été envoyé
- Que le nombre d'éléments est correct
- Que les éléments arrivent bien dans l'ordre
RX Java fournit un deuxième utilitaire très utile pour les tests. Il s'agit de la classe **TestScheduler**, un scheduler conçu pour les tests. Il permet de contrôler l'horloge comme avancer le temps !