Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/05/2013, 17:55
deitynitros98
 
Fecha de Ingreso: junio-2010
Mensajes: 132
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Hacer Tareas Con hilos rapido o lento?

Bueno Simplemente son 2 tareas que no tienen que ver ninguna con la otra

Código:
package multi_matrices_hilos;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Multi_MAtrices_Hilos {    
    
    public static void main(String[] args) {
        GestorTareas gt = new GestorTareas();
        try{
            gt.Ciclo_Principal();
            
        }catch(Exception E){}
    }    
}

class GestorTareas {
    private Menu menu;
    private Multiplicar_Matriz datos;
        
    public GestorTareas(){
        menu = new Menu();
        datos  = new Multiplicar_Matriz(4000,4000,4000);
        menu = new Menu();
        
    }
    
    public void Ciclo_Principal() throws InterruptedException  
    {
        
        new Thread(datos).start();
        Thread.sleep(1);
        datos.set_numSubProceso((byte)1);        
        new Thread(datos).start();
        //datos.set_numSubProceso((byte)3);
        
        //datos.GenerarMatrizA();
        //datos.GenerarMatrizB();
        
        int op;
        try{
            op = menu.menu();
            gestor_opciones(op);
        
        }catch(Exception e){
            System.out.print("Error" + e.getMessage());
           // throw e;
        }
    }
    private void gestor_opciones(int op) throws IOException
    {
        switch(op)
        {
            case 1:
                menu.datos_M_N_S();                
                break;
            case 4:
                break;
        }
    }    
}

class Menu 
{
    private BufferedReader br;
    
    public Menu()
    {
        br = new BufferedReader( new InputStreamReader(System.in));
    }
    public int menu() throws IOException
    {
        System.out.println("1.Cargar Nuevos Matrices Datos.");
        System.out.println("2.Mostrar Matriz A.");
        System.out.println("3.Mostrar Matriz B.");
        System.out.println("4.Iniciar.");
        System.out.println("5.Salir.");
        
        return Integer.parseInt(br.readLine());
    }
    public int[] datos_M_N_S() throws IOException
    {
        int[] MNS = new int[3];
        System.out.print("\nInsertar M: ");
        Integer.parseInt(br.readLine());        
        System.out.print("\nInsertar N: ");
        Integer.parseInt(br.readLine());
        System.out.println("\nInsertar S: ");
        Integer.parseInt(br.readLine());
        
        return MNS;
    }
}


class Multiplicar_Matriz implements Runnable
{
    
    @Override
    public void run() {
        switch(numSubProceso)
        {
            case 0:   
                GenerarMatrizA();
                break;
            case 1:   
                GenerarMatrizB();
                break;
            case 2:   
                break;
        }        

    }
    public Multiplicar_Matriz()
    {
       numSubProceso = 0;
    }
    public Multiplicar_Matriz(int M,int N,int S)
    {
        this();
        this.M = M;this.N = N;this.S = S;
        MatrizA  = new int[M][N];
        MatrizB  = new int[N][S];
        Matriz_C = new int[M][S];        
    }
    
    public void GenerarMatrizA()
    {
        long tiempoInicio = System.currentTimeMillis();
        for(int i=0;i<M;i++)for(int j=0;j<N;j++) 
            MatrizA[i][j] = (int) Math.floor(Math.random()*(101));
        
        long totalTiempo = System.currentTimeMillis() - tiempoInicio;
        
        System.out.println("El Tiempo en generar la MatrizA es: "+totalTiempo);
    }
    
    public void GenerarMatrizB()
    {
        long tiempoInicio = System.currentTimeMillis();
        for(int i=0;i<N;i++)for(int j=0;j<S;j++) 
            MatrizB[i][j] = (int) Math.floor(Math.random()*(101));
        
        long totalTiempo = System.currentTimeMillis() - tiempoInicio;
        
        System.out.println("El Tiempo en generar la MatrizB es: "+totalTiempo);
    }
    
    public void multiplicarMatrices_A_B()
    {
        for (int k = 0; k < M; k++)for( int j = 0; j < S; j++)for(int i = 0; i < N; i++ )             
           Matriz_C[k][j] += MatrizA[k][i] * MatrizB[i][j];
    }
    
    public void mostrarMatricesC()
    {
        for(int i = 0; i < M; i++ ){for(int j = 0; j < S; j++)System.out.print(Matriz_C[i][j]+" ");
           System.out.println();
        }
    }
    
    public void set_numSubProceso(byte numSubProceso)
    {
        this.numSubProceso = numSubProceso;
    }
    
    private int M,N,S;
    private static int[][] Matriz_C;
    private int[][] MatrizA;
    private int[][] MatrizB;
    private byte numSubProceso;    
}

esta muy facil de entender