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();
}
}