La mejor manera de sincronizar tareas asincrónicas

Mi problema: tengo la red inalámbrica 802.15.4 conectada a un puerto serie (usando un contenedor). Puedo enviar paquetes a la red y escuchar los paquetes entrantes. Como puedes imaginar, esto es altamente asincrónico.

Aquí viene la tarea: quiero enviar comandos a la red y esperar la respuesta en una llamada de función. Por ejemplo: Quiero obtener la temperatura del Nodo con la ID de red 1338.

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

¿Hay una mejor manera de esperar un mensaje de respuesta que no sea hacer todo esto de "sincronizar (objeto) esperar (..) notificar (..)"

Saludos cordiales, bigbohne

Tal vez para agregar un poco de especia:

Todo esto debería terminar en una interfaz web donde el usuario puede solicitar estos comandos (ya sea a través de ajax o directamente). También he pensado en almacenar en caché los valores de respuesta en una base de datos. Pero para algunos comandos, MUSS tiene una respuesta directa de éxito / fracaso

Respuestas a la pregunta(3)

Su respuesta a la pregunta