Play Framework や Akka, RxJava, Spring5 での WebFlux などここ数年は非同期処理だとかリアクティブだとかが流行っていますが、 いまいち各処理ごとの特性とかが整理できなかったり、整理しても忘れてしまうことがあるので 自分向けのメモとして書いておこうと思います。 これらが指すものは OS・プログラム・IO などの文脈によっても変わりますので、おかしい部分があるかもしれません。間違いがあれば突っ込んでください。 IO を行うにはファイルやネットワークの通信先の準備ができるまで待つ必要があります。 また、準備ができて実際にデータの入出力を行う際も待つ必要があります。 前者の待ちがブロッキング(IOが開始できるまで待機する)、後者の待ちが同期(IOが終わるまで待機する)です。(多分) 同期・ブロッキング 普通の IO 処理を書く場合は、同期かつブロッキング
![同期・非同期・ノンブロッキング・並列・リアクティブを区別する - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/cbc1f0f7d57c0fbd7dc87d81bc07542c36a83eff/height=288;version=1;width=512/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fqiita-fb-2887e7b4aad86fd8c25cea84846f2236.png)