Que tal buenos dias, quisiera ver si me podrian ayudar con mi programa, lo que pasa es que lo estoy haciendo con Threads pero cuando entra al metodo run no ejecuta el metodo de ordenamiento. El programa tiene que hacer el ordenamiento Burbuja de 25000 numero generados aleatoriamente por medio de Threads, hice que funcionara sin Threads pero cuando lo hago por medio de Hilos no se ejecuta la funcion de ordenamientos y la verdad no se por que (cabe mencionar que sin hilos funciona a la perfeccion), pero con hilos me sale el siguiente error. Espero me puedan ayudar.
Saludos.
Exception in thread "Thread-0" java.lang.NullPointerException
at ordenamientos.Bubble.bubble_sort(Bubble.java:52)
at ordenamientos.Bubble.run(Bubble.java:38)
at java.lang.Thread.run(Thread.java:724)
Este es el codigo de mi programa.
package ordenamientos;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Bubble implements Runnable
{
Thread t;
public int [] matrix;
final void setMatriz(int matriz[])
{
matrix = matriz;
}
int[] getMatriz()
{
return matrix;
}
public Bubble()
{
}
public Bubble(int matriz[])
{
matrix = matriz;
}
public void run()
{
System.out.println("Aqui deberia estar corriendo el ordenamiento burbuja :/");
bubble_sort(getMatriz());
}
public void bubble_sort(int matriz[])
{
long comienza = System.currentTimeMillis();
int buffer;
int i,j;
for(i = 0; i < 25000; i++)
{
for(j = 0; j < i; j++)
{
if(matriz < matriz [j])
{
buffer = matriz[j];
matriz[j] = matriz;
matriz = buffer;
}
}
}
for(int x = 0; x < matriz.length; x++)
{
System.out.println("Numeros: " + matriz
Saludos.
Exception in thread "Thread-0" java.lang.NullPointerException
at ordenamientos.Bubble.bubble_sort(Bubble.java:52)
at ordenamientos.Bubble.run(Bubble.java:38)
at java.lang.Thread.run(Thread.java:724)
Este es el codigo de mi programa.
package ordenamientos;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Bubble implements Runnable
{
Thread t;
public int [] matrix;
final void setMatriz(int matriz[])
{
matrix = matriz;
}
int[] getMatriz()
{
return matrix;
}
public Bubble()
{
}
public Bubble(int matriz[])
{
matrix = matriz;
}
public void run()
{
System.out.println("Aqui deberia estar corriendo el ordenamiento burbuja :/");
bubble_sort(getMatriz());
}
public void bubble_sort(int matriz[])
{
long comienza = System.currentTimeMillis();
int buffer;
int i,j;
for(i = 0; i < 25000; i++)
{
for(j = 0; j < i; j++)
{
if(matriz < matriz [j])
{
buffer = matriz[j];
matriz[j] = matriz;
matriz = buffer;
}
}
}
for(int x = 0; x < matriz.length; x++)
{
System.out.println("Numeros: " + matriz
- );
}
long termina = System.currentTimeMillis();
long tiempoTranscurrido = termina - comienza;
System.out.println("\n\nTiempo transcurrido con el metodo de ordenamiento Burbuja: " + tiempoTranscurrido + " milisegundos");
try
{
File TextFile = new File("/home/norochii/workspace/Ordenamientos/Tiempos.odt");
FileWriter TextOut = new FileWriter(TextFile, true);
TextOut.write ("Ordenamiento Burbuja: "+tiempoTranscurrido + " Milisegundos"+"\r\n");
TextOut.close();
}
catch(IOException e)
{
System.out.println("Error!!");
}
}
}
package ordenamientos;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.Random;
import ordenamientos.Bubble;
public class Principal
{
public static void main(String[] args)
{
int [] arreglo;
arreglo = new int [25000];
Shell shell = new Shell();
Bubble burbuja = new Bubble();
Insercion insercion = new Insercion();
@SuppressWarnings("resource")
Scanner entrada = new Scanner(System.in);
Random numero_aleatorio = new Random();
if(burbuja.matrix == shell.matrix && burbuja.matrix == insercion.matrix )
{
if(shell.matrix == burbuja.matrix && shell.matrix == insercion.matrix)
{
if(insercion.matrix == burbuja.matrix && insercion.matrix == shell.matrix)
{
System.out.println("Datos: " );
for(int x = 0; x<arreglo.length; x++)
{
int valor;
valor = numero_aleatorio.nextInt(250000);
arreglo - = valor;
System.out.println(valor);
try
{
File TextFile = new File("/home/norochii/workspace/Ordenamientos/Numeros sin Ordenar.odt");
FileWriter TextOut = new FileWriter(TextFile, true);
TextOut.write (valor +"\r\n");
TextOut.close();
}
catch(IOException e)
{
System.out.println("Error!!");
}
}
System.out.println("\n\nGeneracion de numeros aleatorios lista.");
System.out.print("Presiona cualquier tecla para continuar: ");
entrada.nextLine();
System.out.println("\n\n\n\n");
System.out.println("Ordenamiento Shell: ");
System.out.println("\n\n\n\n\n\n");
shell.shell_sort(arreglo);
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("\n\n\n\n");
System.out.println("Ordenamiento Burbuja: ");
System.out.println("\n\n\n\n\n\n");
//burbuja.bubble_sort(arreglo);
Thread hilo = new Thread(burbuja);
hilo.start();
//new Thread(burbuja).start();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Ordenamiento Insercion: ");
insercion.insercion_sort(arreglo);
System.out.println("\n\n\n\n\n\n");
}
}
}
}
}