Andrey Asked:2020-05-23 02:52:41 +0800 CST2020-05-23 02:52:41 +0800 CST 2020-05-23 02:52:41 +0800 CST Java 异步/非阻塞 InetAddress.getByName 772 您好,我正在编写一个与 nio 配合使用的单线程 java 程序。 我需要按域创建一个套接字并使用InetAddress.getByName,但它是阻塞的,第一次用这个参数调用它可能需要几秒钟,如何在InetAddress不阻塞线程的情况下获得它,最好是没有额外的线程或使用一个常数他们的? java 1 个回答 Voted Best Answer Sergey Gornostaev 2020-05-23T03:18:40+08:002020-05-23T03:18:40+08:00 发出异步 dns 请求将不起作用。至少没有第三方库。您将不得不使用线程池和未来: ExecutorService executor = Executors.newFixedThreadPool(POOL_SIZE); Future<InetAddress> future = executor.submit(() -> InetAddress.getByName(dnsName)); while (true) { // Цикл событий if (!future.isDone()) continue; InetAddress addr = future.get(); ... }
发出异步 dns 请求将不起作用。至少没有第三方库。您将不得不使用线程池和未来: