Porqué ahora()? (Justificar)

¿Por qué querría cargar una entidad Objectify de forma asincrónica? ¿Y qué significa realmente la carga asincrónica?

De acuerdo aObjetivar documentación sobre carga, la siguiente forma de cargar una Entidad es asíncrona:

// Simple key fetch, always asynchronous
Result<Thing> th = ofy().load().key(thingKey);

Y si quiero que una carga se realice sincrónicamente, debería hacer esto:

Thing th = ofy().load().key(thingKey).now(); // added .now()

Para mí, asíncrono significa que la acción tendrá lugar más tarde en un momento no especificado. Para guardar, asíncrono tiene sentido porque la operación del almacén de datos puede necesitar algo de tiempo para finalizar por sí sola sin bloquear el código de la aplicación.

Pero con la carga, ¿asíncrono significa que la carga tendrá lugar en otro momento? ¿Cómo es eso posible en Java? Pensé que la variableResult<Thing> th tuvo que ser actualizado cuando la línea de códigoResult<Thing> th = ofy().load().key(thingKey); termina de ejecutarse.

Como novato, me ha llevado mucho tiempo resolver esto (ver, por ejemplo,Error de Objectify "No puede crear una clave para un objeto con un nulo @Id" en JUnit)

Entonces tengo algunas preguntas:

1] ¿Por qué querría cargar una entidad Objectify de forma asincrónica?

2] ¿Qué significa realmente la carga asincrónica?

3] ¿Cuál es el vínculo conceptual entrenow() para cargar ynow() para ahorrar?

Carga sincrónica (fuente)

Thing th = ofy().load().key(thingKey).now();

Guardar síncrono (fuente)

ofy().save().entity(thing1).now();

4] ¿Por qué no es síncrono el comportamiento predeterminado para guardar y cargar?

Respuestas a la pregunta(3)

Su respuesta a la pregunta