2012-04-15 196 views
2

我在写一个使用Java的服务器端应用程序。Java:我应该在这种情况下使用多线程吗?

该服务器包含系统的许多用户。对于每个用户,我想将其磁盘空间与远程网络存储器同步。因为同步是独立的,所以我在考虑同时执行它们。

我想为每个用户创建一个线程,并让同步任务同时触发。

但是该系统可以拥有数以万计的用户。这意味着一次创建数万个线程并同时启动。我不确定这是否是JVM可以处理的。

即使它可以处理这个问题,它会提高内存效率,因为每个线程都有自己的堆栈,这可能是一个大的内存命中!

请让我知道您的意见。

非常感谢。

+1

barsju和samlewis都很好。如果使用非阻塞IO,则每个连接都不需要线程,而您需要的线程则需要使用线程池进行管理。 – 2012-04-15 11:28:24

回答

4

你可以看一个固定大小的线程池给线程池来执行你的任务。这会给多线程带来明显的限制。

结账Executors.newFixedThreadPool()

0

就我个人而言,单台机器上不会有成千上万的用户。每个用户都有这么多的活跃用户,这对你来说无能为力。你应该能买得起多台机器。

你可以在Java中有这么多的线程,但正如你所说这是不高效的。您可以使用NIO库来管理与每个线程的多个连接。

图书馆像

http://mina.apache.org/

http://www.jboss.org/netty

是适合的。

同样有趣的http://code.google.com/p/nfs-rpc/

相关问题