2

Java を使用してサーバー側アプリケーションを作成しています。

サーバーは、システムの多数のユーザーを保持します。ユーザーごとに、そのディスク領域をリモート ネットワーク ストレージと同期したいと考えています。同期は独立しているので、並行してやろうと思っています。

ユーザーごとに 1 つのスレッドを作成し、同期タスクを同時に起動できるようにすることを考えています。

しかし、システムには何万人ものユーザーがいる可能性があります。これは、一度に数万のスレッドを作成し、同時に起動することを意味します。これが JVM で処理できるかどうかはわかりません。

これを処理できたとしても、各スレッドには独自のスタックがあり、これは大きなメモリ ヒットになる可能性があるため、メモリ効率が高くなります。

ご意見をお聞かせください。

どうもありがとう。

4

3 に答える 3

4

タスクを実行するためのスレッドのプールを提供する固定サイズのスレッドプールを見ることができます。これにより、適切な制限のあるマルチスレッドの利点が得られます。

チェックアウトExecutors.newFixedThreadPool()

于 2012-04-15T11:21:29.313 に答える
3

You should look into Non-blocking IO.

Here is a "random" article about it from courtesy of google: http://www.developer.com/java/article.php/3837316/Non-Blocking-IO-Made-Possible-in-Java.htm

于 2012-04-15T10:58:32.207 に答える
0

Personally I wouldn't have tens of thousands of users on a single machine. You won't be able to much per user with this many users active. You should be able to afford more than one machine.

You can have this many thread in Java but as you say this is not efficient. You can use an NIO library to manage multiple connection with each thread.

Libraries like

http://mina.apache.org/

http://www.jboss.org/netty

Are suitable.

Also interesting http://code.google.com/p/nfs-rpc/

于 2012-04-15T10:58:08.147 に答える