ホームページ  >  記事  >  Java  >  Java によるネットワーク IO の実装の紹介 (画像とテキスト)

Java によるネットワーク IO の実装の紹介 (画像とテキスト)

黄舟
黄舟オリジナル
2017-03-17 10:03:551428ブラウズ

この記事では主に Java でのネットワーク IO (BIO、NIO、AIO) の実装に関する関連情報を紹介します。必要な方は参考にしてください。

ネットワーク プログラミング で最もよく知られているのは、Socket for の使用です。ネットワーク通信開発。 Java には主に BIO、NIO、AIO の 3 つの実装方法があります。

これら 3 つの概念の分析は常に理解しているように見えましたが、表現があまり明確ではありませんでした。分析を完全に明確にするための要約を次に示します。

1. BIO メソッド

まず、より一般的な言語で説明します。

BIO は、TCP 接続が確立されるたびに、スレッドを作成する必要があります。接続してメッセージを処理します。途中でブロッキングが発生した場合 (たとえば、接続の確立時、データの読み取り時、またはデータの書き込み時)、同時状況ではスレッドもブロックされます。N 個の接続の処理には N 個のスレッドが必要です。
この方法の欠点は、同時実行条件下では非常に非効率であることです。

以下は BIO の動作状況を説明するための図です

2. NIO メソッド

NIO は JDK1.4 によって提案されました。まず、よく使われる文で NIO の動作原理を説明します。ノンブロッキングIOである

NIOは、イベントドライバー(Reactorスレッドモデル)の考えに基づいています。 BIO と比較すると、NIO は 1 つのスレッドを使用してすべてのソケット チャネルを管理します。これはセレクター メカニズムに基づいており、イベントがクエリされると (接続、接続の受け入れ、読み取り、書き込み)、異なる処理スレッド (ハンドラー) に転送されます。

Reactor モデルの動作アプリケーション図を以下に示します。

3. AIO メソッド

AIO は、JDK1.7 によって提案されており、非同期 IO です。 AIO は Proactor モードを使用します。最初に分析する必要があるのは、AIO と NIO の違いです。

(1) NIO 通知はハンドラーの前に発生します。
(2) AIO 通知は、読み取りや書き込みなどの後に発生するコールバックであり、通知がある場合、関連する操作が終了したことを示します。

AIO が読み取りおよび書き込み操作を実行するときは、対応する読み取り/書き込みメソッドを呼び出して CompletionHandler (アクション完了ハンドラー) に渡すだけで済みます。CompletionHandler はアクションの完了後に呼び出されます。 NIO の通知は、アクションの前に発生し、セレクターがこれらのイベントを検出した後、ハンドラーを呼び出して処理します。

プロアクター モードのワークフロー図を以下に示します。

以上がJava によるネットワーク IO の実装の紹介 (画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。