Как решение IOwait можно использовать неблокирующее APO - Java NIO (New I/O), которое использует специальные системные вызовы, которые не блокирует поток при выполнение некоторых I/O операций.
Библиотека, которая простит ваще взаимодействие с сокетами и сделает это эффективно. Она построен на основе Java NIO API, что позволяет выполнять ей I/O операции неблокирующим потоки способом.