import Ġio . reactivex .* Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġio . reactivex . subjects . Async Subject Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġio . reactivex . subjects . Replay Subject Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ fun Ġmain ( args : ĠArray < String > ){ Ċ Ċ // ĠĠĠ Ġval Ġm Subject Ġ= ĠAsync Subject . create < Long >() Ċ // ĠĠĠ Ġ// ĠDef ining Ġthe Ġbehaviour Ġof ĠSubject Ġas Ġobserver Ċ // ĠĠĠ Ġm Subject . subscribe By Ġ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Subject Ġ 1 Ġob serving : Ġ$ it ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠonComplete Ġ= Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Subject Ġ 1 Ġ: ĠonComplete ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ) Ċ // ĠĠĠ Ġ// Sub scri bing Ġto Ġthe Ġobservable Ġusing Ġthe Ġsubject Ċ // ĠĠĠ ĠObservable . interval ( 1 0 , ĠTimeUnit . MILLISECONDS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( m Subject ) Ċ // ĠĠĠ Ġ// Subject Ġbe having Ġas Ġan Ġobservable Ċ // ĠĠĠ Ġval Ġnew Observable Ġ= Ġm Subject .` as ` Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġit Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ ĠThread . sleep ( 4 0 ) Ġ// delay Ġbefore Ġthe Ġsecond Ġobserver Ġsub scri bes Ġto Ġan Ġobservable Ċ // ĠĠĠ Ġnew Observable . subscribe By Ġ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Subject Ġ 2 Ġob serving : Ġ$ it ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠonComplete Ġ= Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġprintln (" Subject Ġ 2 Ġ: ĠonComplete ") Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġ) Ċ // ĠĠĠ ĠThread . sleep ( 1 0 0 0 0 ) Ċ Ċ // ĠĠĠ Ġvar Ġitem Ġ= Ġ 1 ĊĠĠĠ Ġval Ġobservable Ġ= Observable . defer Ġ{ ĊĠĠĠĠĠĠĠ ĠObservable . just ( 1 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġobservable . to Flow able ( Back pressure Strategy . BUFFER ); Ċ // ĠĠĠ Ġprintln (" First Ġobserver Ġsub scri bing ") Ċ // ĠĠĠ Ġobservable . subscribe Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġprintln (" re ceiving Ġ$ it ") Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġitem Ġ= Ġ 2 Ċ // ĠĠĠ Ġprintln (" Second Ġobserver Ġsub scri bing ") Ċ // ĠĠĠ Ġobservable . subscribe Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġprintln (" re ceiving Ġ$ it ") Ċ // ĠĠĠ Ġ} ĊĠĠĠ ĠFlow able . range ( 1 , Ġ 1 0 0 0 ) ĊĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" mapping Ġ$ it ") ĊĠĠĠĠĠĠĠ Ġit ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . computation ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Received Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ ĠThread . sleep ( 1 0 0 0 0 0 0 0 ) ĊĊĠĠĠ Ġval Ġdemo Flow able Ġ= ĠFlow able . create < Int >({ ĊĠĠĠĠĠĠĠ Ġemitter Ġ-> Ġemitter . onNext ( 1 ) ĊĠĠĠĠĠĠĠ Ġemitter . onNext ( 2 ) ĊĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠ Ġ}, ĠBack pressure Strategy . BUFFER ) Ċ Ċ }