Это сообщение Я думаю, что может быть ваш ответ. Если оставить висящие сокеты, вы достигнете максимума (что может быть обусловлено некоторыми другими настройками, которые исправление Windows не исправляет (например, предел JVM?)
В качестве примечания: если вы работаете с таким количеством потоков, весьма вероятно, что вам лучше использовать java.nio, а не простые классы java Socket и ServerSocket.
Этот сайт является очень хорошим руководством по использованию java.nio и тому, как я его изучил (наряду с изучением API Java / NIO Sun / Oracle ), полученным из используя простое программирование Socket и ServerSocket.
В частности, что поможет вашему делу, это использование Selector, который позволит вам мультиплексировать ваш сокет-ввод-вывод так же, как вызов C ++ select () работает с сокетами. Это означает, что в основе кода вашего сокета вы можете уменьшить влияние наличия большого количества потоков, связанных с вводом-выводом сокета, и иметь только один поток, взаимодействующий напрямую с сокетами.