Здравствуйте пишу однопоточную программу на java работающую с помощью nio.
Мне нужно создавать сокет по домену и я использую InetAddress.getByName, но он блокирующий и при первом вызове с данным аргументом может выполнятся чуть ли не секунды, как получить InetAddress не блокируя поток и желательно без дополнительных потоков или с константным их количеством?
Сделать асинхронный dns-запрос не выйдет. По крайней мере без сторонних библиотек. Придётся использовать thread pool и future:
ExecutorService executor = Executors.newFixedThreadPool(POOL_SIZE);
Future<InetAddress> future = executor.submit(() -> InetAddress.getByName(dnsName));
while (true) { // Цикл событий
if (!future.isDone())
continue;
InetAddress addr = future.get();
...
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости