Repo para la investigación de materiales sobre concurrencia en Java
Este repositorio contendrá información y ejemplos sobre temáticas concretas de concurrencia (técnicas, herramientas, librerías, clases…), realizando un estudio teórico sencillo, y después un ejemplo práctico sencillo.
Se hará en grupos de 3 personas, y todos los miembros tendrán que conocer el contenido y estar familiarizado con ello, ya que se podrá evaluar en el examen. A nivel general, lo que tendréis que hacer con cada temática es:
- Explicar el concepto: qué es, para qué sirve, ¿viene incorporado en el framework, necesitamos una librería externa?
- Caso/s de uso/s: en qué situaciones se puede o debe o se recomienda utilizar. Esto es casi lo más importante. Queremos que todos los compañeros puedan recurrir a esto cuando se encuentren con el problema o la utilidad en el futuro.
- Ventajas/inconvenientes: qué nos aporta de beneficioso o qué problema resuelve.
- Realizar una pequeña prueba de concepto: un ejemplo o varios de la técnica-herramienta en acción, que se pueda lanzar y ver en ejecución. La finalidad es que si algún compañero/a necesita utilizar esto en el futuro, que pueda recurrir a ello viendo además un ejemplo.
- Pensad, o ayudaos del LLM, para elaborar un ejemplo lo más interesante posible.
- Necesitará tener un README con la información necesaria para ejecutarse. Es decir, lo que necesite la persona cuando se descargue el ejemplo, para poder ejecutarla. Puede ser directamente un proyecto de código, o si es necesario configurar algo, que se quede recogido en este fichero.
- Fork-Join Framework (ForkJoinPool, ForkJoinTask, RecursiveTask )
- RxJava
- Parallel Streams en Java 8+ (CountDownLatch ,CyclicBarrier )
- Mecanismos de sincronización en Java
- Colas concurrentes (o BlockingQueue,ConcurrentLinkedQueue,DelayQueue)
- Estructuras de datos concurrentes o Thread-safe (ConcurrentHashMap,ConcurrentNavigableMap, ,Etc… )
- Sincronización con Locks (ReentrantLock, ReadWriteLock)
- Testing de concurrencia: cómo realizar test unitarios para entornos concurrentes
- Uso de ThreadLocal en Java