Ejecutando tareas paralelas: Pools de hebras

Paralelizar tareas puede ser una forma rápida y sencilla de optimizar un proceso que se compone de múltiples subprocesos pequeños. Y una forma sencilla de implementar ésta paralelización es el uso de los Pools de hebras.

El método para crear un Pool de hebras es el siguiente (comentaré todo en los comentarios del código:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class Main
{
	public static void main(String args[])
	{
		// Creamos un pool de hebras, en éste caso con 10 hebras, podremos
		// configurarlo con el número de hebras que necesitemos
		ExecutorService exec = Executors.newFixedThreadPool(10);

		// Ejecutaremos 100 tareas de ejemplo, que se irán ejecutando poco a poco
		for (int i = 0; i < 100; i++)
		{
			// Creamos cada tarea. Puede ser cualquier clase que implemente el interfaz Runnable
			exec.execute(new Runnable()
			{
				public void run()
				{
					 System.out.println("Ejecutando la hebra " + Thread.currentThread() + "...");
				}
			});
		}

		// Finalizamos el pool de hebras
		exec.shutdown();

		try
		{
			// Eperamos 50 segundos a que todo finalize
			boolean b = exec.awaitTermination(50, TimeUnit.SECONDS);
			System.out.println("Estado tras la espera... " + (b ? "¡Finalizado!" : "No finalizado..."));
		}
		catch (InterruptedException e)
		{
		   e.printStackTrace();
		}
	}
}

Sencillo, ¿a que si? Probadlos, no podréis vivir sin ellos a partir de ahora icon wink Ejecutando tareas paralelas: Pools de hebras

¿Te ha gustado?
Envía tus Trackbacks a la siguiente dirección:
http://java.hijodeblog.com/2011/11/29/ejecutando-tareas-paralelas-pools-de-hebras/trackback/

¡Deja tu comentario!





Disclaimer: Las imágenes mostradas en ésta página web se utilizan sólamente con propósitos ilustrativos, y son propiedad de sus respectivos autores (cuando es aplicable).
Hijo de Blog es un producto del Dr. SeROne

Los contenidos se ofrecen bajo una licencia de Creative Commons
Attribution-NonCommercial-NoDerivs 3.0 Unported

salvo que se indique lo contrario

Licencia de Creative Commons