Repaso
English

¿Por qué los objetos inmutables simplifican el código concurrente?

Opciones

  1. Son más rápidos de crear que los mutables en todos los casos
  2. No pueden cambiar, así que los threads los comparten sin locks (Opción correcta)
  3. Siempre usan menos memoria que los objetos mutables
  4. Se guardan automáticamente en la base de datos al crearse

Respuesta

No se pueden cambiar tras crearse, así que los threads pueden compartirlos sin locks

Por qué

Casi todos los bugs de concurrencia vienen de dos threads cambiando los mismos datos a la vez (race conditions).

Un objeto inmutable nunca cambia, así que cualquier número de threads puede leerlo a la vez sin riesgo y sin locks.

Para 'modificarlo' creas un objeto nuevo, que los demás threads nunca ven a medio hacer.

Recuerda

Sin cambios → sin race conditions.

Términos clave

Practica esta pregunta en Repaso