2

我正在使用 Java 编写服务器端应用程序。

服务器拥有系统的许多用户。对于每个用户,我想将其磁盘空间与远程网络存储同步。因为同步是独立的,所以我想同时进行。

我正在考虑为每个用户创建一个线程并让同步任务同时触发。

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

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

请让我知道你的意见。

非常感谢。

4

3 回答 3

4

您可以查看一个固定大小的线程池,提供一个线程池来执行您的任务。这将给多线程带来合理限制的好处。

查看Executors.newFixedThreadPool()

于 2012-04-15T11:21:29.313 回答
3

您应该查看非阻塞 IO。

这是一篇由谷歌提供的关于它的“随机”文章:http: //www.developer.com/java/article.php/3837316/Non-Blocking-IO-Made-Possible-in-Java.htm

于 2012-04-15T10:58:32.207 回答
0

就我个人而言,我不会在一台机器上拥有成千上万的用户。有这么多活跃用户,您将无法为每个用户提供太多服务。您应该能够买得起不止一台机器。

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

图书馆喜欢

http://mina.apache.org/

http://www.jboss.org/netty

都合适。

也很有趣http://code.google.com/p/nfs-rpc/

于 2012-04-15T10:58:08.147 回答