Java NIOとIOの詳細な違い(通俗編)

1153 ワード

カーネル空間、ユーザ空間、コンピュータアーキテクチャ、コンピュータ構成原理、......確かに少し奥深い.
速度ではCPU > >
  • I-HDDからメモリ
  • O-メモリからハードディスク

  • 1つ目は、ハードディスク(HDD)からデータを読み取り、プログラムを待つことです.
    データを読み終わったら、操作を続けます.この方式は最も簡単で、ブロックIOと呼ばれています.
    第2の方法:私はハードディスクからデータを読み出して、それからプログラムは引き続き下へ実行して、データの読み取りが終わった後に、現在のプログラム(ハードウェアにとって中断と呼ばれて、プログラムにとってコールバックと呼ばれています)に通知して、それからこのプログラムはすぐにデータを処理することができて、あるいは現在の操作を実行してデータを読み取ることができます.
    従来のJava IOでは,いずれもブロック式IOであり,NIOは非ブロック式IOを導入していた.
    もう一つは同期IOと非同期IOです.よく言われる用語の一つが「非同期非ブロック」で、非同期と非ブロックは同じことのようですが、これは多分誤解でしょう.
    Java NIOのSelectorについては、古いJava IOシステムでは、Stream、すなわち「ストリーム」、ストリームIOに基づいています.
    プログラムがハードディスク(HDD)からメモリにデータを読み込むとき、オペレーティングシステムは2つの「トリック」を使って性能を向上させた.それはプリリードであり、もし私が第1セクタの第3トラックの内容を読み取ったら、第2トラックと第4トラックの内容も使用する可能性が高いので、オペレーティングシステムは近くのトラックの内容を早めに読み取り、メモリに入れる.
    キャッシュです.
    (PS:以上のプロセスが簡略化された)
    以上から分かるように、オペレーティングシステムはブロックBlockでハードディスクからデータを取り、大きな洗面器のように、一気に水を入れた.しかし、Javaが使用しているとき、古いIOは確かにストリームストリームストリームストリームに基づいています.つまり、オペレーティングシステムは洗面器の水をくれましたが、ストローでゆっくり飲まなければなりません.
    そこで、NIOは世に出た.
    参考文献:https://blog.csdn.net/maguanghui_2012/article/details/54600519