Java 如何减少此代码的运行时间?

Java 如何减少此代码的运行时间?,java,Java,我的问题是运行时间长。如何在这段代码中减少运行时间我遇到了一个类似的问题,涉及到IP地址的网络查找。网络延迟的问题正如另一个人所说的……它是由网络驱动的。到达目的地需要多长时间和多少跳 我找到的唯一解决方案是线程化查找,在您的案例中是InetAddress.getByAddressip。我的解决方案是设置一个包含10个线程的ExecutorService。将每个InetAddress.getByAddressip打包为可调用的。监视可调用文件的完成情况。打包另一个并启动它。看看我在这个论坛上提出

我的问题是运行时间长。如何在这段代码中减少运行时间

我遇到了一个类似的问题,涉及到IP地址的网络查找。网络延迟的问题正如另一个人所说的……它是由网络驱动的。到达目的地需要多长时间和多少跳

我找到的唯一解决方案是线程化查找,在您的案例中是InetAddress.getByAddressip。我的解决方案是设置一个包含10个线程的ExecutorService。将每个InetAddress.getByAddressip打包为可调用的。监视可调用文件的完成情况。打包另一个并启动它。看看我在这个论坛上提出的与这个问题相关的一个问题:

正如我发现的那样,对遗嘱执行人的服务要谨慎。线程的数量实际上取决于运行时硬件的CPU数量。太多的线索,它会磨停止相信我在这方面。线程太少,您的时间减少可能无法实现


我已经离开了公司中实施最终解决方案的部门,因此我没有现成的代码。但是上面的链接提供了一些关于ExecutorService和使用可调用对象的基本代码。

只是一个问题,为什么要使用while,而您可以使用for?DNS解析受延迟限制,基本上没有其他限制。并行化。根据文档getByAddressbyte[]不执行反向名称服务查找。您是否分析了代码以查看哪个位需要更多时间?
InetAddress localhost = null;
try {
    localhost = InetAddress.getLocalHost();
} catch (UnknownHostException ex) {
    /* Purposely empty */
}

byte[] ip = localhost.getAddress();
int i = 1;
while (i <= 254) {
    ip[3] = (byte) i;
    InetAddress address = null;
    try {
        address = InetAddress.getByAddress(ip);
    } catch (UnknownHostException ex) {
        /* Purposely empty */
    }

    String HostName = address.getHostName();
    if (!address.getHostAddress().equals(address.getHostName())) {
        list.addElement(HostName);
    }
    i++;
}