domingo, 25 de octubre de 2020

Hilos y listas en Java

 El otro día en un desarrollo cualquiera un compañero debía resolver un problema en una tarea con Katalon, recorriendo una lista de registros que se usarían en llamadas vía API REST. El problema es que le parecía lento e incluso me indicaba que tendía a petar.

Al final en una reunión con los sabios de equipo se propuso optimizar usando hilos, crear paralelamente varios procesos, un pool, que fuera atacando a la lista y procesando llamadas. Se lo hice así improvisando en "tiempo real" XD un ejemplo con una declaración anónima en un bucle que repetía mientras la lista contuviera algo, para ello le sustituí el List por un LinkedList que una de sus peculiaridades es que usa métodos para gestionar la lista como una pila, dispones del método pop para obtener el elemento y de paso eliminarlo de la lista, algo que ya te ahorra bastante trabajo.

El ejemplo funcionó pero no se estaba teniendo en cuenta algunas cosas cómo el control de hilos que se generaba, aunque si es cierto que se usaba una variable que contaba los hilos, pero en resumen la concurrencia era un desastre, una chapuza

Días después en mi día libre he realizado un ejemplo mejor con alternativas al uso de la clase base por excelencia, Thread.

Lo único que sobra es la variable boleana busy que se puso con el pretexto de evitar el acceso concurrente (a la vez de la lista) por varios hilos ejecutados en paralelo. Al final la sustituí por la instrucción syncronized pero me olvidé de quitar el boleano que ya no se usaba.



No hay comentarios:

Publicar un comentario