Разветвление:
Насколько я могу судить, вы не можете передавать дескриптор сокета между процессами Java, используя обычный API. Тем не менее, кажется, что это возможно в Windows с использованием Winsock 2 API . В Posix вы должны иметь возможность ветвить дочерний процесс с доступом к родительскому сокету, так как разветвленные процессы наследуют родительские сокеты .
Я думаю, вы могли бы реализовать новый класс SocketImpl, который поддерживает перемещение дескриптора сокета в другой процесс, но для этого вам нужно написать некоторый код JNI.
Звучит довольно волосато для меня, я сомневаюсь, что создание нового процесса из Java - хорошая идея!
Слушателей:
Другим подходом может быть создание нового процесса «слушателя», который, по сути, является новым предварительно разветвленным рабочим. Затем каждый работник может по очереди прослушивать сокет для соединений.
Затем рабочие должны будут координировать свои действия с процессом управления, который по мере необходимости управляет порождением новых процессов.
Я согласен с @Bozho, если ошибка в одном потоке может привести к их уничтожению (я думаю, это должно быть исключение JVM, убивающее все приложение), у вас большая проблема. Если возможно, вы должны рассмотреть возможность изоляции потоков.