なぜsubscribeは実行されないのか?(RxJava)

231日目

Azure Storage SDK for JavaはRxJavaに対応してます。RxJava(リアクティブプログラミング)なんで初めて聞いた言葉で何もわからないままサンプルを試してみました。

github.com

で、サンプルが動かない。厳密に言うとサンプルをベースに最小限のプログラムを作成したものを試してました。なぜだ?とずーっと考えてましたが以下の記事を見つけて解決しました。

stackoverflow.com

Thus when your main thread finishes, those threads are terminated before processing your observable.

原因は非同期のスレッドが処理している間にメインスレッドが終了してしまっていた、ということでした。
非同期のスレッドが終了させるためにメインスレッドでThread.sleep()を入れたらsubscribeが実行されました。
サンプルはwhile (true) でループさせてるんですが、僕が作ったスクリプトはそのループを取り除いてました。実はこれが原因だったとはね・・・。 エラーも何もでないので相当悩みました・・・

RxJavaリアクティブプログラミング (CodeZine BOOKS)

RxJavaリアクティブプログラミング (CodeZine BOOKS)