Está en la página 1de 3

Threads o Hilos en Java

Los Hilos o los “Threads” en Java, son básicamente una forma de poder ejecutar varios
procesos simultáneamente en nuestros programas en Java.

Usualmente para poder utilizarlos tenemos que crear clases que extienden a la clase
Thread, y reescribir el método principal “run ()”, el cual es el que se va a ejecutar
principalmente al iniciar un hilo, thread o nuevo proceso en java.[ CITATION Jor11 \l
12298 ]

En esencia la multitarea nos permite ejecutar varios procesos a la vez; es decir, de


forma concurrente y por tanto eso nos permite hacer programas que se ejecuten en
menor tiempo y sean más eficientes. Evidentemente no podemos ejecutar infinitos
procesos de forma concurrente ya que el hardware tiene sus limitaciones, pero raro es
a día de hoy los ordenadores que no tengan más de un núcleo por tanto en un
procesador con dos núcleos se podrían ejecutar dos procesos a la vez y así nuestro
programa utilizaría al máximo los recursos hardware. Para que veáis la diferencia en un
par de imágenes, supongamos que tenemos un programa secuencial en el que se han
de ejecutar 4 procesos; uno detrás de otro, y estos tardan unos segundos:

Crear un hilo (Thread):

Un hilo o proceso en Java comienza con una instancia de la clase java.lang.Thread, si


analizamos la estructura de dicha clase podremos encontrar bastantes métodos que
nos ayudan a controlar el comportamiento de los hilos, desde crear un hilo, iniciarlo,
pausar su ejecución, etc. Aquellos métodos que siempre tenemos que tener presentes
con respecto a los hilos son:[ CITATION Lui08 \l 12298 ]

 start()
 yield()
 sleep()
 run()

La acción sucede dentro del método run(),


digamos que el código que se encuentra
dentro de dicho método es el trabajo por
hacer, por lo tanto, si queremos realizar
diversas operaciones cada una simultánea
pero de manera independiente, tendremos
varias clases, cada una con su respectivo
método run(). Dentro del método run() puede
haber llamados a otros métodos como en
cualquier otro método común, pero la pila de
ejecución del nuevo proceso siempre
comenzará a partir de la llamada al método
run().[ CITATION Lui08 \l 12298 ]

YORDY CHONANA VIII SISTEMAS


Ejemplo:
Thread t = new Thread("Thread para contar", new Runnable() {
void run()
{
for(int i = 1 ; i <= 10 ; i++)
System.out.println(i);
}
});
t.start();

/* Acá, para ejemplificar, llamamos a un método que tarda,


* por ejemplo porque espera que se tipee enter. Mientras
* tanto, en la pantalla va apareciendo la cuenta hasta diez
* que sucede en el thread.
*/
in.readLine();

EJEMPLO 2:
Metodo “main” para ejecutar los Threads de la clase proceso.

<strong>public static void main(String[] args) {


// TODO Auto-generated method stub
Proceso hilo1 = new Proceso("Hilo 1");
Proceso hilo2 = new Proceso("Hilo 2");
hilo1.setMensaje("Este es el mensaje del hilo 1");
hilo2.setMensaje("Mensaje hilo 2");
hilo1.start();
hilo2.start();
}
</strong>

Clase Proceso

<strong>public class Proceso extends Thread{


String mensaje;
public Proceso(String msg)
{
super(msg);
}
public void run()
{
for(int i =0;i<15;i++)
{
System.out.println(mensaje);
}
System.out.println("Este proceso ha terminado:"+this.getName());
}
public void setMensaje(String msj)
{

YORDY CHONANA VIII SISTEMAS


this.mensaje = msj;
}
}
</strong>

YORDY CHONANA VIII SISTEMAS

También podría gustarte