我目前已知的原因只有这1个: 就是由于NIO采用缓冲区+通道的方式来传输数据, 而不是IO包的以字节或字符为单元传输数据, 增加了一次处理数据的字节数, 而且这种方式更接近于底层操作系统的IO方式, 所以速度明显优于IO;
除了这一点还有其他的吗?
闭关修行中......

1.io はストリーム指向です。つまり、データを読み取るときにストリームから 1 つずつ読み取られるため、データを全体として処理することができず、バッファーがありません。データはバッファに格納され、データの読み取りはバッファ内で実行されるため、データ オフセット操作を実行する方が便利です 2. スレッドが io を操作するとき、現在読み取るデータがない場合、io はブロックされます。 、その場合、スレッドはブロックされます。チャネル上で io が動作するため、チャネルに読み込むデータがない場合、チャネルは他の io3 を処理するように切り替えることができます。つまり、スレッドはセレクターを介して複数のチャネルを選択できますが、io は
純粋に手作業で行っておりますので、お役に立てれば幸いです
次のシナリオを想定します。 4 コアのマシンで、ネットワーク リクエストを受信し、ビジネス ロジックを処理し、処理結果をクライアントに返します。 ビジネス ロジックの処理中に、ネットワーク リクエストが 10,000/秒であるとします。ファイルの書き込み。送信に時間がかからないと仮定すると、このファイルは 5 秒間ブロックされる必要があります。
1. BIO 処理を使用します:
ビジネス ロジックの処理では IO 時間が長いため、処理スレッドがブロックされます。複数のリクエストの場合、1 つのリクエストでビジネスを処理するスレッドが生成されるため、5 秒以内に 50,000 個のスレッドが存在する必要があります。ビジネス ロジックを処理するために使用されるシステム。 CPU は、スレッドのスケジューリングを処理するためにリソースのほとんどを使用します。
2. NIO 処理を使用します: NIO の IO 操作は非同期であり、複数のリクエストの場合、4 つのビジネス スレッドが開かれ、1 つのスレッドが 1 つの CPU スレッドを占有します。ビジネスロジックをフルスピードで処理できます。ビジネスでの IO 操作はハードウェアで非同期に処理でき、データの準備ができたら後続のビジネス処理のために CPU にメッセージが送信されます。現時点では、ビジネスを効率的に処理するために必要なスレッドは 4 つだけです。 CPU がアイドル状態になることはほとんどありません。スレッド スケジューリングでリソースを消費する必要はありません。
IO であっても NIO であっても、それは Linux ネットワーク I/O モデルの現れです。Linux ネットワーク モデルを学習することをお勧めします。
1.nio はメモリマッピングを行い、ユーザー空間とシステム空間の間の 1 つのコピーを排除します2.nio は非同期、トリガーされた応答、ノンブロッキング応答で、主に CPU であるシステムリソースを最大限に活用します

0zhangzhun132·たった今
1.io はストリーム指向です。つまり、データを読み取るときにストリームから 1 つずつ読み取られるため、データを全体として処理することができず、バッファーがありません。データはバッファに格納され、データの読み取りはバッファ内で実行されるため、データ オフセット操作を実行する方が便利です
の処理のみを行うことができます。2. スレッドが io を操作するとき、現在読み取るデータがない場合、io はブロックされます。 、その場合、スレッドはブロックされます。チャネル上で io が動作するため、チャネルに読み込むデータがない場合、チャネルは他の io
3 を処理するように切り替えることができます。つまり、スレッドはセレクターを介して複数のチャネルを選択できますが、io は
純粋に手作業で行っておりますので、お役に立てれば幸いです
EOF
次のシナリオを想定します。 4 コアのマシンで、ネットワーク リクエストを受信し、ビジネス ロジックを処理し、処理結果をクライアントに返します。 ビジネス ロジックの処理中に、ネットワーク リクエストが 10,000/秒であるとします。ファイルの書き込み。送信に時間がかからないと仮定すると、このファイルは 5 秒間ブロックされる必要があります。
1. BIO 処理を使用します:
ビジネス ロジックの処理では IO 時間が長いため、処理スレッドがブロックされます。複数のリクエストの場合、1 つのリクエストでビジネスを処理するスレッドが生成されるため、5 秒以内に 50,000 個のスレッドが存在する必要があります。ビジネス ロジックを処理するために使用されるシステム。 CPU は、スレッドのスケジューリングを処理するためにリソースのほとんどを使用します。
2. NIO 処理を使用します:
NIO の IO 操作は非同期であり、複数のリクエストの場合、4 つのビジネス スレッドが開かれ、1 つのスレッドが 1 つの CPU スレッドを占有します。ビジネスロジックをフルスピードで処理できます。ビジネスでの IO 操作はハードウェアで非同期に処理でき、データの準備ができたら後続のビジネス処理のために CPU にメッセージが送信されます。現時点では、ビジネスを効率的に処理するために必要なスレッドは 4 つだけです。 CPU がアイドル状態になることはほとんどありません。スレッド スケジューリングでリソースを消費する必要はありません。
IO であっても NIO であっても、それは Linux ネットワーク I/O モデルの現れです。Linux ネットワーク モデルを学習することをお勧めします。
1.nio はメモリマッピングを行い、ユーザー空間とシステム空間の間の 1 つのコピーを排除します
2.nio は非同期、トリガーされた応答、ノンブロッキング応答で、主に CPU であるシステムリソースを最大限に活用します
こんにちは