基于Java的100k线程服务器能否生存

基于Java的100k线程服务器能否生存,java,multithreading,load-balancing,serversocket,Java,Multithreading,Load Balancing,Serversocket,我想在家里托管一个应用程序。 我的本地机器:Core i7 2600 4核、8线程和16GB内存 光纤:100Mbps 我的目标:100k workerthread,每个线程都有自己的while循环 我的机器能生存吗。代码示例: serversocket obj_sock=new serversocket() while(true){ new thread(new workerthread(obj_socket.accept()); } class workerthread implement

我想在家里托管一个应用程序。 我的本地机器:Core i7 2600 4核、8线程和16GB内存 光纤:100Mbps

我的目标:100k workerthread,每个线程都有自己的while循环

我的机器能生存吗。代码示例:

serversocket obj_sock=new serversocket()
while(true){
new thread(new workerthread(obj_socket.accept());
}

class workerthread implements runnable{
      public workerthread(socket sock){
           rs=sock.getinputstream()
           ws=sock.getoutputstream()
       }
      public void(run){
        while(true){
         //do read stream, write stream
        }
      }
}
附言。
我跳过了代码中的异常。

我的64位Java 8上的默认线程堆栈大小是1M。这意味着100000个线程将需要100G的RAM来处理。这是可调的,并且可能低于16G,但软件将需要更多的测试和受约束的堆栈

看起来操作系统会让你创建那么多线程


我强烈建议您研究一个事件驱动(即非阻塞)协议框架,如or,以实现您的服务器。

我也跳过了许多变量,sorry@MiniovaWeb我们需要更多信息您需要什么样的信息,我将提供给您,您真的希望有100000个并发用户在家中使用您的应用程序,在一台机器上?假设这是可能的,在100Mbits/s的情况下,100000个用户中的每个用户最多可以获得1000比特/秒,即每秒125字节。我怀疑这100000个用户是否会继续使用如此带宽的应用程序。更不用说,就每个线程的堆栈而言,假设它是500KB,您就已经需要50GB的内存。没有第三方api或SDK,只有Java,我正在编写一个测试客户端,今天或tomm将发布输出