Обычно каждому сокету нужен поток, но это не масштабируется. Selector позволяет держать тысячи соединений на одном потоке.
Шаг 1 — поднимаем сервер и делаем неблокирующим:
ServerSocketChannel.open().configureBlocking(false);
Шаг 2 — регистрируем в селекторе события:
server.register(selector, SelectionKey.OP_ACCEPT);
Шаг 3 — ждём событий:
selector.select();
🔥 Так можно обрабатывать тысячи клиентов без лишних потоков.
👉 Java Ready | #практика