IoProvider:すべてのチャンネルの登録の登録と取り消しを提供します
SocketChannelには、データを読みたいが、それは、オブザーバ・モードによって必要性は、登録および登録解除方法を取る非同期方式を使用する必要があります。
データは読み取り可能であるかSocketChanne好ましくは、コールバックコールバックが実行する処理とき
IoArgs:IOのカプセル化、入力パラメータ
レシーバ:データを受信し、
送信者:送信データ
コネクタ:接続、パッケージとReciver送信者の代表
IoContext:単一の例を作成し、のみIoProviderを取得することができます
SocketChannelAdapter:非同期、非同期送信を受信し、特定の実装の操作を閉じます。
クラス図:
Serverスレッドのアイコン:
結果:
クライアント10を接続し、データを送信します
4つのみのスレッドが最適化サーバで受信(入力スレッド-1 / -2 / -3 / -4)、プール-Nスレッド1が転送されるスレッド、全く最適化が存在しません
二、IO対NIO
IO:フロー指向のブロッキングIO
(ストリーム指向、IOブロッキング)
NIO:バッファに配向し、IO、セレクタセレクタをノンブロッキング
(指向バッファ、非IOは、セレクタブロック)
IOスレッド処理データをブロックする第三に、
それはデータを読み込み後にただ一つのスレッドが、その後、時にブロックする場合は、次のデータを読み取るには、それだけで完成されたデータを読み取ることができます。
それは、それはシリアルプロセスの実行ダウンデータの一部です
四、NIOスレッド処理データ
最初は、チャネルセレクタに登録しました
スレッドでは、データの読み込みを開始し、それはチャンネルに読み込まれる、チャネル・バッファにデータを記入します。そして、チェックして、データの一部を処理しました。すぐに次のデータが読み込まれるが続きます。
また、シリアルプロセスですが、ため、データのブロッキングを避け、何のデータではなく、その後のプロセスが存在しない場合には、チャンネル内のデータは、このプロセスを実行することになるがある場合にのみそれがあります。
第五に、
SeverSocketを受け入れるようにリンクされ、クライアントによって受信、各リンクは完全に四個の以上のスレッドを備え、スレッドプールを使用することができる単一のスレッドを使用することができます。書き込み操作は、スレッドプールで行うことができます。
VI。
すべてのリンクは個別に実行し、読み、スレッド処理、読み取り、書き込みの書き込みによって行うことができます
VII。
下糸のブロッキングIOモードとの関係:
道の下でサービスを受けNIOクライアント:
NIOサーバーは、スレッドの調整の下で受信します: