Вам нужен гибридный дизайн клиент / сервер, но вы не используете пример кода, который вы рассматриваете.Это синхронно, с использованием блокирующих вызовов сокетов, которые ждут ответа, прежде чем продолжить.
Чтобы избежать ситуации, когда оба клиент-серверных приложения блокируются в ожидании соединения друг с другом, необходимо выполнить неблокирующий асинхронный ввод-вывод сокетов.Например, вы можете использовать библиотеку Java NIO http://rox -xmlrpc.sourceforge.net / niotut /