4種類のIOストリームJava

4種類のIOモデルJava関連

1.同期ブロッキングIO

典型的なものはソケットTCPの例です

サーバーとクライアントの通信

このようなもの

以下は擬似コードです

// server端 阻塞自己直到收到消息
// 没收到 线程被挂起
msg = server.accept()
// 收到再执行
handler(msg)

2.同期非ブロッキングIO

// server端 
while(msg=server.accpet() !=null){
	handle(msg)
}

ブロッキングIOとは異なり、毎回戻り値が必要です。

3.多重化されたIO

これは、最も使用されるIOモデルである必要があります。多くの高性能IOフレームワークは、多重化されたIOに基づいています

ネティのように

nioは多重化IOの基礎です

多重化には2つのモードがあります:ProactorモードとReactorモード

Proactorは非同期IOに使用されます

Reactorは同期IOに使用されます

  • リアクターモード

    人気の理解は

    お母さん(クライアント)欲しい私(サーバー)正午調理
    (イベント/またはIO要求)、

    でも今はゲームをしたいのですが(時間を待ってご飯を炊きたくありません)

    教えて小愛(イベント登録)
    それまでに小藍目覚まし時計(条件)料理をすることを思い出して(Callbakcが私に電話をかけ直す)
    その後、私は調理(IOを完了する準備ができています)

    イベントは「自分の料理を作りたい」と登録されました

    コールバックの結果は、「これは実行できます」です。

  • プロクターモード

    人気の理解は

    お母さん(クライアント)欲しい私(サーバー)正午調理(イベント/またはIO要求)、

    でも今はゲームをしたいのですが(時間を待ってご飯を炊きたくありません)

    教えて小愛たぶん(イベントセパレーター)料理したいご飯1杯と水1.5杯(データサイズとバッファー領域)、Xiao Aiの学生は直接自動炊飯器(操作系)ご飯を入れて水を加えます。炊飯器の準備ができました、Xiao Aiはご飯を知っています調理済み(IO完了)。思い出させる(食べられることを通知してください)

    その後、私はそれを手に入れました(終了したイベント)

    イベントの登録は「とにかくごはんを炊いてほしい。どうでもいい」

    コールバックの結果は、「これはご飯1杯に対して1.5杯の水を必要とするために行われます」です。

Proactorにはオペレーティングシステムが必要であるため、Reactorモードのより詳細な分析には、通常Reactorモードを使用します。

高度な同時IO要求を処理するための次の3つのモードがあります

次のコードと画像は

ダグリー

JavaのスケーラブルなIO

このPDFをダウンロードして学習することをお勧めします

従来のIOモデル

ここに画像の説明を挿入

  1. シングルリアクターシングル処理スレッド

    1つのReactorが、IOやその他の操作を含むすべてのリクエストを処理します
    ここに画像の説明を挿入

  2. シングルリアクターマルチプロセッシングスレッド

    ReactorはIOのみを完了し、残りはワーカースレッドに渡されます
    ここに画像の説明を挿入

  3. マルチリアクターマルチ処理スレッド

    個別リクエストと実運用
    ここに画像の説明を挿入

4.非同期IO

ほとんど使用されず、オペレーティングシステムが必要

file = socket.getfile(buff,size);
// 等待一段时间
// buff size 中已经有了file
// 告诉我  我收到了
res = server.finishfile()
元の記事を22件公開 Likes2 Visits 881

おすすめ

転載: blog.csdn.net/weixin_41685373/article/details/104973584