Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
• Los hilos son útiles porque permiten que el flujo de un programa sea Existen dos formas de trabajar con hilos en Java
dividido en dos o más partes, cada una ocupándose de alguna tarea de
-Por medio de la clase Thread
forma independiente
-Por medio de la interfaz Runnable
-Un hilo se encarga de la comunicación con el usuario
-Otro hilo realiza la transmisión de un archivo
Hilos (Threads) Hilos (Threads)
En ejecución
notify
Termina las
instrucciones
wait sleep en run
En espera Inactivo
public class ThreadEjemplo extends Thread public class ThreadEjemplo extends Thread Se hereda de la
{ { clase Thread
public ThreadEjemplo(String s) public ThreadEjemplo(String s)
{ {
super(s); super(s); Se utiliza el constructor de
} } Thread por medio del cual se
puede colocar un nombre al hilo
public void run() public void run() Se sobrescribe el método run.
{ { Esto es lo que hace (la tarea) el
System.out.println("Mensaje 1 del hilo " + getName()); System.out.println("Mensaje 1 del hilo " + getName());
hilo
System.out.println("Mensaje 2 del hilo " + getName()); System.out.println("Mensaje 2 del hilo " + getName());
System.out.println("Mensaje 3 del hilo " + getName()); System.out.println("Mensaje 3 del hilo " + getName());
} }
} }
Hilos (Threads) Hilos (Threads)
En espera Inactivo
}
PruebaHilos2
Hilos (Threads) Hilos (Threads)
public class ThreadEjemplo extends Thread
Método sleep {
• Se especifica la cantidad de milisegundos que estará dormido el hilo public ThreadEjemplo(String s)
{
• Se debe manejar con un try-catch una posible excepción
super(s);
}
public void run()
{
System.out.println("El hilo " + getName() + " va a dormir 5 segundos");
try{
Dormir 5
sleep(5000); segundos
}
catch (InterruptedException excepcion){
System.out.println("Error al intentar sleep");
}
System.out.println("El hilo " + getName() + " despertó");
}
}
Hilos (Threads) Hilos (Threads)
public class ThreadEjemplo extends Thread
{
Problema: Crear un hilo que esté inactivo una cantidad aleatoria de
public ThreadEjemplo(String s)
milisegundos
{
super(s);
}
public void run()
{
System.out.println("El hilo " + getName() + " va a dormir 5 segundos");
try{
Dormir 5
sleep(5000); segundos
}
catch (InterruptedException excepcion){
System.out.println("Error al intentar sleep");
}
System.out.println("El hilo " + getName() + " despertó");
PruebaHilos3
}
}
Hilos (Threads) Hilos (Threads)
public void run()
Genera un Comunicación entre procesos
{ numero aleatorio
int tiempoDormir=(int)(Math.random()*10001); entre 0 y 10000
System.out.println("El hilo " + getName() + " va a dormir " + tiempoDormir + " milisegundos");
try{
sleep(tiempoDormir);
}
catch (InterruptedException excepcion){
System.out.println("Error al intentar sleep");
}
PruebaHilos4
Hilos (Threads) Hilos (Threads)
Problema: Crear una aplicación Java que permita dibujar un cuadrado Problema: Crear una animación de un semáforo. Cuando se da clic en la
de color aleatorio en una posición dada al hacer clic pero que éste ventana inicia la animación. Primero verde por 4 segundos, luego
dure solamente por 2 segundos amarillo por 1 y finalmente rojo por 3
MousePaint3 MousePaint4
Hilos (Threads)
PruebaHilos5