BIO、NIO、AIOの
IO対NIO上記の概念の差(NIOは、バックグラウンドスレッドの実行をブロックします)
- IOストリーム指向の、NIO指向のバッファ
- JavaのIOストリームは、すべてのバイトが読み取られるまで、それぞれが、ストリームから1つ以上のバイトを読むために、彼らはどこにもキャッシュされません意味します。
- NIOは、データストリーム内の前後に移動することができるバッファのため
- IOの流れがブロックされ、NIOの流れがブロックされていません
- 様々なJavaのIOストリームがブロックされています。これは、スレッドのコールが()またはライト()を読み出す場合があり、いくつかのデータが読み出される、またはデータが完全に書き込まれるまで、スレッドがブロックされることを意味します。その間にスレッドが任意のもの、再びそれを行うことはできません
- JavaのNIOが非ブロックモード、スレッドは、チャネルからのデータの読み出し要求を送信し、それだけのデータが現在利用可能な取得することができ、現在入手可能なデータが存在しない場合は、それが何かを得ることはありません。NIOは、複数のチャネル(ネットワーク接続やファイル)を管理、シングルスレッドだけ1つ(または複数の)を使用することができますが、データを解析のコストでブロッキングストリームからデータを読み込むよりも複雑かもしれません。
- 非ブロッキング書き込みが真実です。チャンネルにいくつかのデータを書き込むために、それが完全に書き込まれるのを待つ必要はありません、このスレッドが同時に何かを行うことができますスレッドを要求。
- セレクタ
- 、チャネルがすでに処理できる入力を備えています。Java NIOセレクタを使用すると、セレクタを使用して複数のチャンネルを登録して、チャンネルを「選択」するために、別のスレッドを使用することができ、単一のスレッドが複数の入力チャネルを監視することができますまたはチャンネルを選択書かれる準備ができています。この選択メカニズムは、単一のスレッドが容易になるように複数のチャネルを管理します。
参考:https://blog.csdn.net/evan_man/article/details/50910542
- 、チャネルがすでに処理できる入力を備えています。Java NIOセレクタを使用すると、セレクタを使用して複数のチャンネルを登録して、チャンネルを「選択」するために、別のスレッドを使用することができ、単一のスレッドが複数の入力チャネルを監視することができますまたはチャンネルを選択書かれる準備ができています。この選択メカニズムは、単一のスレッドが容易になるように複数のチャネルを管理します。
NIO通信フレームワークミナ、網状、グリズリー
https://blog.csdn.net/wang_snake/article/details/79249972
BIO、NIO、AIO区别
https://blog.csdn.net/guanghuichenshao/article/details/79375967
ネットワークプログラミング
NIO /ページ/ 2 /とhttps://h2pl.github.io/categories/バックエンド/ Javaのネットワークプログラミング