Diseñe sus beans inmutables: por ejemplo, no tenga setters y solo use argumentos de constructor para crear un bean. Hay otras formas, como el patrón Builder, etc.
Diseñe sus beans sin estado: por ejemplo, un bean que hace algo puede ser solo una función (o varias). Este bean en la mayoría de los casos puede y debe ser sin estado, lo que significa que no tiene ningún estado, solo hace cosas con argumentos de función que proporciona cada vez (en cada invocación)
Diseñe sus beans persistentes: que es un caso especial de “inmutable”, pero tiene algunas propiedades muy agradables. Por lo general, se usa en programación funcional, donde Spring (al menos todavía) no es tan útil como en el mundo imperativo, pero los he usado con proyectos Scala / Spring.
- ¿Cuál es el equilibrio entre técnica e intuición para un científico de datos exitoso?
- ¿Necesito aprender el desarrollo del backend si quiero convertirme en un científico de datos?
- ¿Qué es la clasificación en minería de datos?
- ¿Cómo será una carrera en análisis de big data en los próximos años?
- ¿Cuál es la diferencia entre Spark, R, Python y Hadoop en Data Science?
Diseñe sus beans con cerraduras [último recurso]: recomendaría esto a menos que esté trabajando en una biblioteca de nivel inferior. La razón es que nosotros (los humanos) no somos buenos pensando en términos de bloqueos. Justo como nos criamos y cuidamos. Todo sucede en paralelo sin que tengamos que “poner esa lluvia en pausa, déjame coger un paraguas”. Sin embargo, las computadoras tienen que ver con bloqueos cuando se habla de “varias cosas al mismo tiempo”, por lo tanto, hay algunos de nosotros (personas excepcionales) que estamos haciendo su parte justa e implementando bibliotecas basadas en estos bloqueos. La mayoría de los demás humanos pueden usar estas bibliotecas y no preocuparse por la concurrencia.