Sla*_*ish 5 java sockets connection multithreading
我正在编写一个简单的多线程socketserver,我想知道如何最好地处理传入的连接:
为每个新连接创建一个新线程.并发线程数将受到限制,并且通过指定积压来限制等待连接
将所有传入连接添加到队列中,并拥有一个处理队列的工作线程池
我倾向于选择2,因为我真的不想拒绝任何连接,即使在高负载下也是如此,但我想知道是否有任何考虑我应该注意接受有效的无限连接?
通过无限连接,您可以创建大量线程.这意味着需要进行大量处理,而且默认情况下,每个线程只会为堆使用固定数量的内存(我认为每个线程的数字为512kB ,但这可能与平台有关).
通过汇集固定数量的线程并接受有限数量的客户端,您将确保在合理的时间段内为您的某些客户提供服务,并且您的服务器不会因超载而崩溃.
您可能想查看有关使用NIO构建服务器的文章,或者查看Apache Mina等框架.