1

プロトコル:TCP

クライアントを受け入れ、ソケット(によって返されるss.accept())を配列に配置するSocketServerを備えたサーバーがあります。

ソケットを読み取る準備ができたときに通知する必要があるスレッドが1つあります(クライアントがデータを送信しました)。このスレッドは、処理のために他のスレッドにリクエストをディスパッチするので、この最初のスレッドが行うことは本当にシンプルで高速です。

出来ますか?

私は本当に1スレッド=1クライアントを避け、1スレッドでNクライアントを処理したいと思っています。

4

1 に答える 1

3

「高度にスケーラブルなNIOベースのサーバーのアーキテクチャ」に関するこの記事で説明されているJavaNIOの非ブロッキングIOの側面を確認することをお勧めします。 さらに、この質問への回答が役立つと思います。

通常、非ブロッキングIOはコールバックを利用します。データが利用可能になったときに「コールバック」されるハンドラーを登録する必要があります。この場合、ハンドラーはメッセージまたはデータを単一のスレッドに投稿します。これは、同時通知/コールバックを処理するためにスレッドセーフである必要があります。

于 2012-07-24T10:30:16.970 に答える