Тайм-ауты будут несколько хитрыми и будут иметь скрытые ошибки, но основной дизайн, казалось бы, прост: напишите класс, который принимает Socket в конструкторе. в socket.accept мы просто выполняем новую реализацию обработки сокетов, с большим предвидением и планированием масштабируемости или, если это стендовый тестовый эксперимент, то класс обработки сокетов просто переходит к обработке данных, а когда он возвращается, у вас есть некоторые своего рода логическое или числовое для состояния или чего-либо, удобное место для null btw, и ether записывает успех в поток вывода из сокета или информирует клиента о времени ожидания или о том, какие потребности вашего бизнеса
Если вам нужен масштабируемый, эффективный дизайн для длительных тяжеловесов, перейдите непосредственно к nio ... одноразовым ручным кодированным решениям, которые я описываю, вероятно, не будет хорошо масштабироваться, но обеспечит фундаментальную концептуальную основу для nio дизайн код-правильной работы.
(извините, ребята, я думаю, что непосредственно в коде - шаблоны кода затем применяются к коду после того, как он работает. То, что не выдерживает, переделывается тогда, а не до этого)