Ale para que no tengais que copiar ;) import java.util.Random; public class monitores3 implements Runnable{ private static int tam = 8; private static int[][] matriz = new int [tam][tam]; @Override public void run() { } public static void main(String[] args){ Random rand = new Random(System.nanoTime()); double tiempo_inicio, tiempo_final; for(int i = 0; i < matriz.length; i++){ for(int j = 0; j < matriz[0].length; j++){ matriz[i][j] = rand.nextInt(10); } } tiempo_inicio = System.nanoTime(); Thread[] hilos = new Thread[tam]; for(int i = 0; i < hilos.length; i++){ Runnable runnable = new monitores3(); hilos[i] = new Thread(runnable); hilos[i].start(); }
Profe genial la parte de los pool de Threads, pero no entendi la parte del pool.shutdown() y el bucle while. Es decir que los hilos van haciendo cola en el shutdown() y una vez que todos hayan pasado, la ejecucion del hilo principal saldria del while? Muchas gracias
alguien sabe por qué mi 4790k tarda la mitad en hacer la multiplicación de una matriz usando SingleThreadExecutor o incluso de manera iterativa que usando cualquier tipo de concurrencia? llevo varios días experimentando y en un 90% de las veces obtengo mejores resultados cuando prescindo de concurrencia y paralelismo. muchas gracias
Metele mucha mas carga, es decir, mas elementos a la matriz o vector que estés utilizando, a partir de un numero elevado veras la ganancia con el paralelismo, sino solamente con el tiempo de crear los hilos y tal, ya gana la versión de un solo hilo. Un saludo. PD: A ver si me vendes ese procesador cuando no lo quieras :P
Tuve un pequeño fallo, y es que digamos que metí el bucle en otro bucle de 20000, ya que yo primero lo hice por mi cuenta y luego vi como lo habías hecho tú y lo modifique para dejarlo igual, resumiendo hice 8.000.000.000.000 multiplicaciones hahaha
+Dinerillo extra Tu puedes usar el IDE que quieras, si te fijas no hago nada que sea exclusivo de Eclipse, por lo que cada cual que use el IDE que le resulte mas cómodo. Un saludo.
Solo un apunte, no se hereda de Runnable, se implementa la interfaz Runnable.
Ale para que no tengais que copiar ;)
import java.util.Random;
public class monitores3 implements Runnable{
private static int tam = 8;
private static int[][] matriz = new int [tam][tam];
@Override
public void run() {
}
public static void main(String[] args){
Random rand = new Random(System.nanoTime());
double tiempo_inicio, tiempo_final;
for(int i = 0; i < matriz.length; i++){
for(int j = 0; j < matriz[0].length; j++){
matriz[i][j] = rand.nextInt(10);
}
}
tiempo_inicio = System.nanoTime();
Thread[] hilos = new Thread[tam];
for(int i = 0; i < hilos.length; i++){
Runnable runnable = new monitores3();
hilos[i] = new Thread(runnable);
hilos[i].start();
}
for(int i = 0; i < hilos.length; i++){
try{
hilos[i].join();
}catch(Exception ex){}
}
tiempo_final = System.nanoTime() - tiempo_inicio;
System.out.println((tiempo_final/10000000) + " milisegundos");
for(int i = 0; i < matriz.length; i++){
for(int j = 0; j < matriz[0].length; j++){
System.out.print(matriz[i][j] +" ");
}
System.out.println();
}
}
}
Profe genial la parte de los pool de Threads, pero no entendi la parte del pool.shutdown() y el bucle while. Es decir que los hilos van haciendo cola en el shutdown() y una vez que todos hayan pasado, la ejecucion del hilo principal saldria del while?
Muchas gracias
alguien sabe por qué mi 4790k tarda la mitad en hacer la multiplicación de una matriz usando SingleThreadExecutor o incluso de manera iterativa que usando cualquier tipo de concurrencia?
llevo varios días experimentando y en un 90% de las veces obtengo mejores resultados cuando prescindo de concurrencia y paralelismo.
muchas gracias
Metele mucha mas carga, es decir, mas elementos a la matriz o vector que estés utilizando, a partir de un numero elevado veras la ganancia con el paralelismo, sino solamente con el tiempo de crear los hilos y tal, ya gana la versión de un solo hilo.
Un saludo.
PD: A ver si me vendes ese procesador cuando no lo quieras :P
Jm pensar que ya salieron los prosesadores cuanticos de 4bits. ya me imagino de aqui a unos años :3
8:12 ... y tuve que reiniciar el ordenador. HAHHHAHAHA
Menos mal que me dió por avisar :D.
Tuve un pequeño fallo, y es que digamos que metí el bucle en otro bucle de 20000, ya que yo primero lo hice por mi cuenta y luego vi como lo habías hecho tú y lo modifique para dejarlo igual, resumiendo hice 8.000.000.000.000 multiplicaciones hahaha
como que usas ecipse y no codeblocks??
+Dinerillo extra Tu puedes usar el IDE que quieras, si te fijas no hago nada que sea exclusivo de Eclipse, por lo que cada cual que use el IDE que le resulte mas cómodo.
Un saludo.
en la imagen de presentacion de bloques has escrito mal Threads pusiste theads =P
+Bruno Cyvian puso Theads
+Bruno Cyvian Dios, eso es un "Zas, en toda la boca", tengo que prestar mas atencion, gracias!
Un saludo.