Java における IO と NIO の主な違いは、図
1 に示すとおりです。指向とバッファ指向
IO はストリーム指向であり、NIO はバッファ指向です。
Java IO はストリーム指向です。つまり、すべてのバイトが読み取られるまで、一度に 1 つ以上のバイトがストリームから読み取られ、どこにもキャッシュされません。
Java NIO のバッファー指向のアプローチは少し異なります。データはバッファに読み込まれ、後で処理され、必要に応じてバッファ内を行き来します。
2. ブロッキング IO と非ブロッキング IO
Java IO のさまざまなストリームがブロックされています。スレッドが read() または write() を呼び出すと、データが読み取られるか、データが完全に書き込まれるまで、スレッドはブロックされます。
Java NIO のノンブロッキング モードでは、スレッドが特定のチャネルからデータを読み取るリクエストを送信できますが、取得できるのは現在利用可能なデータのみです。現在利用可能なデータがない場合は、何も取得されませんスレッドをブロックしたままにする代わりに、スレッドはデータが読み取り可能になるまで他の作業を続行できます。
3. セレクター
Java NIO のセレクターを使用すると、単一のスレッドで複数の入力チャネルを監視できます。1 つのセレクターを使用して複数のチャネルを登録できます。その後、別のスレッドが使用されます。処理可能な入力がすでにあるチャンネルを「選択」するか、書き込みの準備ができているチャンネルを選択します。この選択メカニズムにより、単一のスレッドで複数のチャネルを簡単に管理できるようになります。
推奨チュートリアル: java チュートリアル
以上がJava nioとioの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。