INTRODUCCIÓN
Un hilo de ejecución, en sistemas operativos, es una característica que permite a una aplicación realizar varias tareas concurrentemente. Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.(wikipedia.org)
Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden e ese dato modificado inmediatamente.
PROBLEMA
Se trata de ordenar un array de datos de N dimensión mediante 3 métodos de ordenación. Estos métodos se ejecutarán de forma concurrente, es decir, “al mismo tiempo”. Debido a que ya hay bastante información en Internet sobre los hilos, no tiene caso explicar su funcionamiento, en vez de ello, quien no tenga muy claro el tema de hilos, les dejo algunos enlaces que deben leer antes de continuar:
http://rt00149b.eresmas.net/Otras/ConcurrenciaJAVA/
http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte10/cap10-1.html
http://www.chuidiang.com/java/hilos/hilos_java.php
HERRAMIENTAS
- Sistema Operativo Linux (Mandriva 2007)
- JDK 1.6
- IDE NetBeans 6.0
DESARROLLO
Como se observa en el Diagrama de clases UML, el programa se compone de 3 clases:
1.- Burbuja
2.- Inserción
3.- QuickSort
Y una clase principal desde donde se genera el array con los elementos aleatorios a ordenar y se ejecutan los 3 hilos correspondientes a los 3 métodos por los cuales se ordenará el array.
Estas tres clases implementan a la interfaz Runnable para poder hacer uso de los hilos, también se pudo haber heredado de la clase Thread. En el método run de Runnable es donde se debe colocar el código que se desea ejecutar como un hilo, en nuestro caso es donde se codificarán los algoritmos de Burbuja, Inserción, y QuickSort. Además, como se observa, se cuenta con un método imprimir() el cuál imprimirá el array ya ordenado.
La clase principal es Test, desde donde se pide al usuario introduzca la dimensión del array, para este fin se utiliza la clase Scanner implementada a partir del JDK 1.5 que toma como parámetro la salida estandar System.in
Scanner in = new Scanner(System.in);
Y con sus métodos, nextInt, nextDouble, etc., se obtiene la salida del teclado.
Para generar los números aleatorios se utiliza la clase Random localizada en el paquete java.util
public void generaDatos()
{
System.out.println("\n ************* DATOS GENERADOS ALEATORIAMENTE***************\n");
for(int i = 0; i <= datos.length-1; i++)
{
dato = Double.parseDouble(formato.format(rnd.nextDouble()*100));
datos[i] = dato;
System.out.println(i + ".- "+ dato);
}
}
La diferencia de tiempos entre los 3 métodos implementados es muy notoria, QuickSort es un método bastante rápido para la ordenación de datos, mientras que el método burbuja tarda en ordenar 100,000 datos en más de 1 minuto, el QuickSort los ordena en menos de 2 segundos.
A continuación algunas pantallas del programa en ejecución:
Puedes solicitarme el código fuente enviandome un correo electrónico o dejando un comentario.
Saludos!!
Archivado bajo: Java | Etiquetado: burbuja, concurrencia, Hilos Java, insercion, metodos de ordenacion, quicksort
pe parece muy interesante .
me puedes hacer el favor de dar el codigo fuente
gracias
Claro, se lo mando a su correo
Me parecio muy interesante el desarrollo que llevo acabo, me puedes hacer el favor de darme el codigo fuente
Muchas gracias
Juan Sebastian
Muy interesante el tema de los hilos, quisiera observar el codigo , te agradeceria muchisimo si me lo envias a mi correo.
Mil gracias
Alberto Benitez
Me parece super bueno el ejemplo, serias tan amable de facilitarme el codigo fuente.
Es que estoy haciendo un trabajo donde tengo que demostrar un ejemplo con threads y otro sin ellos.
Gracias !!!
muy interesante el ejemplo te agradeceria que me facilitaras el codigo fuente para checarlo
hola mi estimado amigo porfavor mandame el codigo fuente en c++ grasias..
hola me podrias enviar el codigo fuente a mi correo para poder pobrar y ejecutar mis pruebas
me intriga lo de quicksort me harias el gran favor de mandarme el codigo fuente a mi correo gracias, en formato java si se puede.
Hola, muy interezante. Justo me dejaron un trabajo sobre esto.. ahi buscando llegue a este post.. Le agradeceria si pudiera mandarme el codigo a mi correo..
, Thankkkk….
Hola muy buen trabajo, yo voy empezando con esto de netbeans me gustaria mucho si me mandaras el codigo para ver como se hacen esas cosas en este programa de antemano muchas gracias!!! espero tu respuesta. oscar
Me intriga lo de quicksort me harias el gran favor de mandarme el codigo fuente a mi correo gracias, en formato java si se puede.
gracias
Hola!
Esta excelente
seria de gran utilidad si pudieses mandarme el codigo fuente.
de antemano muchas gracias!
ATTE
Héctor Solís Andrade
fijate que el 13 de septiembre tengo que hacer algo similar sera que me lo puedes enviar a:
andres7272@hotmail.com
porfavor gracias.
bueno lo quiero now!
ola me gustaria probarlos me lo podrias mandar gracias:)
ei me podrias mandar tu codigo, actualemente estoy viendo eso en clase y me gustaria ver como se realiza la ordenacion para entenderle mas a los metodos.
dd
hi…. me gustaria que me pasaras el codigo necesito hacer una investigacion sobre los diferentes lenguajes de programacion sobres los metodos…
te lo agradeceria mucho
oye me parece super bien lo de los metodos de ordenamiento , de echo en la escuela para un trabajo final me encargaron algo de metodos de ordenacion
me podrias proporcionar el codigo fuente
del metodo de quicksort o el de burbuka??
=) te lo agradecer enormemente…!
saludos
necesito un programa de metodo de ordenacion de seleccion rapida
por ffiisss me pueden ayudar
Hola a todos!
Les propongo que quien necesite el ejemplo, me mande un correo electrónico solicitandomelo. Próximamente comprare un pequeño hosting para pasar toda esta información a mi página personal.
Saludos!!
interesanta el tema que e s el Métodos de ordenación de forma concurrente, chebre chebre un favor me puedes pasar el codigo por fis
espero su respuesta pronto si enteresante esta el tema,chau cuidate
me podrias enviar el código, esta muy interesante.
muchas gracias por postear este tema!
saludos! y gracias de antemano
me lo puedes enviar a este correo:
chayross@gmail.com
Excelente
me lo puedes enviar al correo, esta muy interesante
ric_alf88@gmail.com
Hey demasiado bueno, me gustaria echarle un vistazo, me lo podrías mandar…. GRacias