Как (и где) управлять открытыми розетками?Должен ли я поместить их в HashMap или что-то в этом роде?
Обычно каждый сокет будет управляться потоком, который будет отвечать за чтение и запись в сокет.У вас также был бы главный поток, который отвечает за получение всех запросов на подключение через предопределенный сетевой интерфейс и порт (используя класс ServerSocket
API), который затем может передать фактическую работу обработки рабочим / подчиненным потокам.В этом случае вам следует обратить внимание на пул потоков для рабочих потоков, поскольку создание потоков 50 КБ, скорее всего, перегружает вашу ОС и оборудование.
Кроме того, если вы действительно управляете одновременными сокетами 50 КБ,Настоятельно рекомендуется использовать NIO API (java.nio. *) Поверх простого IO API Java, хотя я не видел слишком много проектов, требующих более 2-5 тыс. Одновременных подключений.В мире Java существует как минимум две известные платформы на основе NIO - Apache MINA и JBoss Netty .Однако я бы рекомендовал прочитать хорошо написанное руководство по NIO , прежде чем переходить к использованию NIO API или платформ NIO.