Melhor maneira de sincronizar tarefas assíncronas

Meu problema: tenho a rede sem fio 802.15.4 conectada a uma porta serial (usando um wrapper). Posso enviar pacotes para a rede e ouvir os pacotes recebidos. Como você pode imaginar, isso é altamente assíncrono.

Aí vem a tarefa: quero enviar comandos para a rede e aguardar a resposta em uma chamada de função. Por exemplo: desejo obter a temperatura do nó com o ID da rede 1338.

double getTemperature(int id) throws Exception { .... }

Existe uma maneira melhor de esperar por uma mensagem de resposta que não seja fazer tudo isso "sinconizado (objeto), espere (..) notifique (..)"?

Atenciosamente, bigbohne

Talvez para adicionar um pouco de tempero:

Tudo isso deve terminar em uma interface da web na qual o usuário pode solicitar esses comandos (através do ajax ou diretamente). Também pensei em armazenar em cache os valores de resposta em um banco de dados. Mas para alguns comandos você MUSS tem uma resposta direta de sucesso / fracasso

questionAnswers(3)

yourAnswerToTheQuestion