Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package hilos;
  2.  
  3. import java.util.concurrent.ExecutorService;
  4. import java.util.concurrent.Executors;
  5. import java.util.concurrent.TimeUnit;
  6.  
  7. /**
  8.  *
  9.  * @author Rafa G
  10.  */
  11. public class Main {
  12.    
  13.     public static void main(String[] args) throws InterruptedException {
  14.         int tamano=6000;
  15.         long sumaMatriz=0;
  16.         Matriz matriz = new Matriz(tamano);
  17.         matriz.llenarMatriz(); //llamamos al metodo que llenara la matriz
  18.         long tinicio=System.currentTimeMillis(); //Tiempo inicio
  19.         //Realiza la suma normal de los valores de la matriz
  20.         for (int i=0; i<tamano; i++){
  21.            for (int j=0; j<tamano; j++){
  22.                 sumaMatriz = sumaMatriz+matriz.matriz[i][j];
  23.            }
  24.         }
  25.         long tfinal=System.currentTimeMillis();//tiempo fin
  26.        
  27.         System.out.println("La suma sin threads es: " +sumaMatriz+"  tiempo: "+(tfinal-tinicio));
  28.  
  29.         //crea los threads
  30.         ThreadSuma suma1 = new ThreadSuma(tamano, 0, 1000, matriz);
  31.         ThreadSuma suma2 = new ThreadSuma(tamano, 1000, 2000, matriz);
  32.         ThreadSuma suma3 = new ThreadSuma(tamano, 2000, 3000, matriz);
  33.         ThreadSuma suma4 = new ThreadSuma(tamano, 3000, 4000, matriz);
  34.         ThreadSuma suma5 = new ThreadSuma(tamano, 4000, 5000, matriz);
  35.         ThreadSuma suma6 = new ThreadSuma(tamano, 5000, 6000, matriz);
  36.  
  37.         ExecutorService executor = Executors.newCachedThreadPool();
  38.  
  39.         long tiinicio=System.currentTimeMillis();
  40.  
  41.         //Ejecuta los threads
  42.         executor.execute(suma1);
  43.         executor.execute(suma2);
  44.         executor.execute(suma3);
  45.         executor.execute(suma4);
  46.         executor.execute(suma5);
  47.         executor.execute(suma6);
  48.         executor.shutdown();
  49.  
  50.         boolean tasksEnded = executor.awaitTermination(1, TimeUnit.MINUTES);
  51.  
  52.  
  53.         if ( tasksEnded ){
  54.             long tifinal=System.currentTimeMillis();
  55.             System.out.println("La suma Con Threads es: " +matriz.getSuma()+"  tiempo: "+(tifinal-tiinicio));
  56.         }  
  57.     }
  58. }