To compensate for hosts that might be underpowered and take a bit longer to respond to an ARP request lets increase the timeout for that process to happen but split up the work a lot more to keep it fast (its actually a little faster than before). Use an executor with a thread pool to split up the work of contacting hosts