Lo nuevo de concurrencia en Java 7
Hoy me bajé la versión final de Java 7 cosa que tenía rato pendiente. Una de las características que más me interesaban de esta versión es el nuevo framework para la solución de problemas con múltiples hilos.
Básicamente lo que uno se ahorra es la creación y sincronización de hilos. De verdad que uno termina escribiendo menos código.
Se soporta la estrategia "divide y vencerás" con tareas recursivas. Se ofrecen dos: una que no devuelve resultados RecursiveAction y otra que sí RecursiveTask. Nuestra clase deberá recibir en su constructor su instancia del problema. El método compute() debe implementar la solución al problema incluido la división del problema con nuevas instancias de la misma clase.
Para probarlo escribí mi propia versión del MergeSort con un main() donde hago el proceso sobre 20millones de long. Por defecto usará tantos hilos como procesadores disponibles se tenga en el computador. Se puede cambiar esto pasando la cantidad de hilos deseada al constructor de ForkJoinPool.
En mi laptop ya vieja con un triste AMD Tk-55 dual core se ejecuta en 9276ms. ¡Pruebalo!

Publicar un comentario en la entrada