while(true){
    try{
Socket clientSocket = serverSocket.accept();
new Thread(new HandlerThread(clientSocket)).start;
}catch (IOException e){

System.out.println(this.getServerName()+"接收socket时发生异常");
e.printStackTrace();
}
}
服务器上可能发生一种拒绝服务攻击(denial-of-service),如果为每个连接生成一个新线程,大量几乎同时如站连接可能导致它生成极大数量的线程
Java虚拟机最终会耗尽内存而崩溃,更好的办法是使用一个线程池来限制资源使用,50个线程应该过客,不论负载多大应该不会崩溃,可能会拒绝连接,但起码不会崩溃

 




while(true){
    try{
Socket clientSocket = serverSocket.accept();
executorService.execute(new HandlerThread(clientSocket));
}catch (IOException e){

System.out.println(this.getServerName()+"接收socket时发生异常");
e.printStackTrace();
}
}
 
 

相关文章:

  • 2022-12-23
  • 2021-07-02
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2021-07-15
  • 2021-06-17
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-29
  • 2022-02-16
  • 2022-02-07
  • 2022-12-23
相关资源
相似解决方案