Вы пишете, что код в синглтоне выполняется на клиенте, и вы хотите проверить, работает ли сервер, и в противном случае запустить сервер. Почему клиенту необходимо ускорить работу сервера?
Разве не стоит оставлять ответственность за запуск сервера другой службой? Возможно, это хорошая идея, если метод завершится ошибкой, например, с исключением ServerNotRunning. С помощью специальной обертки вы можете запустить сервер оттуда.
Это обеспечит связь только с коммуникациями, которые они должны делать, общаясь с сервером.