Java - Sumar filas de una matriz con hilos

 
Vista:
Imágen de perfil de daxtrox
Val: 39
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Sumar filas de una matriz con hilos

Publicado por daxtrox (10 intervenciones) el 20/04/2020 04:14:33
Como podría sumar la siguiente matriz utilizando hilos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public class SumaFilas {
     private int [][] matriz;
    private int total;
 
    public int getTotal() {
        return total;
    }
 
    public void setTotal(int total) {
        this.total = total;
    }
    private int fila;
    public SumaFilas() {
        //constructor que rellena la matriz con numeros aleatroiros de 0 a 10
          matriz=new int[3][3];
          Random rd =new Random();
          for(int i=0;i<matriz.length;i++){
              for(int j=0;j<matriz[i].length;j++){
                    matriz[i][j]=rd.nextInt(10);
 
              }
 
          }
    }
 
 
   //metodo para que instancia cada hilo y sume
    public void sumar(){
 
 
        for(int i=0;i<matriz.length;i++){
            this.fila=i;//para saber por la fila que va
             Thread t=new Thread(new Suma());//instanciar la clase que hereda de thread
 
        t.start();
//es importante dormir el hilo ..el argumento son los segundos ...
         try {
             Thread.sleep(400);
         } catch (InterruptedException ex) {
             Logger.getLogger(SumaFilas.class.getName()).log(Level.SEVERE, null, ex);
         }
 
        }
 
    }
//Simplemente que muestre la matriz por consola
    public void mostrar(){
        for(int i=0;i<matriz.length;i++){
            for(int j=0;j<matriz[i].length;j++){
                 System.out.print(matriz[i][j]+" ");
            }
            System.out.println("");
 
        }
    }
 
     class Suma extends Thread{
          /**
     *
     */
    @Override
    public void run(){
           System.out.println("Hilo en ejecucion "+getName());
 
 
                System.out.println("FILA "+fila);
               for(int j=0;j<matriz[fila].length;j++){
              System.out.print(" Valor a sumar "+matriz[fila][j]);
              total+=matriz[fila][j];
 
             }
               System.out.println(" Total "+total);
 
          System.out.println(" ");
 
    }
     }
 
}

main

1
2
3
4
5
6
7
8
9
public static void main(String[] args) {
 
 
    SumaFilas s=new SumaFilas();
    s.mostrar();
    s.sumar();
    System.out.println(s.getTotal());
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Sumar filas de una matriz con hilos

Publicado por Franklin (179 intervenciones) el 20/04/2020 16:28:37
Este enlace podría serte de utilidad :
http://www.java2s.com/Tutorials/Java/Java_Thread/index.htm

hay mejores formas de trabajar con hilos pero yo suelo utilizar por su comodidad lo siguiente

1
new Thread(clase::metodo).start();

sería

1
2
new Thread(SumaFilas::mostrar).start();
new Thread(SumaFilas::sumar).start();

para metodos sin parametros. Quizás te sirva pero como te digo hay mejores prácticas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Sumar filas de una matriz con hilos

Publicado por Kabuto (1383 intervenciones) el 20/04/2020 16:33:00
He probado el código y parece que funciona.
¿Cuál es la duda pues?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumar filas de una matriz con hilos

Publicado por Tom (1831 intervenciones) el 20/04/2020 18:31:01
Me temo que funciona solo gracias al sleep().
private int fila debe ser un atributo de Suma, y debes pasárselo como parámetro en el constructor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar