我正在使用 Java 编写服务器端应用程序。
服务器拥有系统的许多用户。对于每个用户,我想将其磁盘空间与远程网络存储同步。因为同步是独立的,所以我想同时进行。
我正在考虑为每个用户创建一个线程并让同步任务同时触发。
但是该系统可以拥有数以万计的用户。这意味着一次创建数万个线程并同时触发。我不确定这是否是 JVM 可以处理的。
即使它可以处理这个问题,这是否会节省内存,因为每个线程都有自己的堆栈,这可能是一个很大的内存命中!
请让我知道你的意见。
非常感谢。
我正在使用 Java 编写服务器端应用程序。
服务器拥有系统的许多用户。对于每个用户,我想将其磁盘空间与远程网络存储同步。因为同步是独立的,所以我想同时进行。
我正在考虑为每个用户创建一个线程并让同步任务同时触发。
但是该系统可以拥有数以万计的用户。这意味着一次创建数万个线程并同时触发。我不确定这是否是 JVM 可以处理的。
即使它可以处理这个问题,这是否会节省内存,因为每个线程都有自己的堆栈,这可能是一个很大的内存命中!
请让我知道你的意见。
非常感谢。
您可以查看一个固定大小的线程池,提供一个线程池来执行您的任务。这将给多线程带来合理限制的好处。
查看Executors.newFixedThreadPool()
您应该查看非阻塞 IO。
这是一篇由谷歌提供的关于它的“随机”文章:http: //www.developer.com/java/article.php/3837316/Non-Blocking-IO-Made-Possible-in-Java.htm
就我个人而言,我不会在一台机器上拥有成千上万的用户。有这么多活跃用户,您将无法为每个用户提供太多服务。您应该能够买得起不止一台机器。
您可以在 Java 中拥有这么多线程,但正如您所说,这效率不高。您可以使用 NIO 库来管理每个线程的多个连接。
图书馆喜欢
都合适。