| Introducción a la multitarea basada en hilos |
| Paso 2: Operativa |
Como interactuar con un hilo principal
El hilo principal que crea la MVJ, puede ser interceptado y manipulado a través del Objeto Thread.
- para que esto sea posible, hay que obtener una referencia hacia él llamando al método Thread.currentThread()
- una vez obtenemos esta referencia, ya podemos interactuar con él
Vamos a empezar creando la Clase ThreadApli en el paquete paqthread. Este es el código generado por el Asistente
package paqthread;
public class ThreadApli {
public static void main(String args[]){
}
} |
ahora añadimos las siguientes líneas de código
package paqthread;
public class ThreadApli {
public static void main(String args[]){
Thread t1 = Thread.currentThread();
for (int i = 10; i > 0; i--) {
System.out.println(i);
t1.sleep(2000);
}
}
} |
- Thread t1 = Thread.currentThread();
- con este método obtenemos una referencia que apunta al hilo principal del programa
- t1.sleep(2000);
- hacemos que el hilo principal duerma durante 2 segundos
Como podemos ver el compilador se queja con el siguiente mensaje
- unreported exception java.lang.InterruptedException; must be caught or declared to be thrown
Para crear el bloque try-catch de forma cómoda vamos a hacer clic con el botón derecho del margen izquierdo y seguidamente vamos a seleccionar surround with try-catch

este es el código generado por el asistente de NetBeans
package paqthread;
public class ThreadApli {
public static void main(String args[]){
Thread t1 = Thread.currentThread();
for (int i = 10; i > 0; i--) {
try {
System.out.println(i);
t1.sleep(2000);
}
catch(InterruptedException ex) {
Logger.getLogger(ThreadApli.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
} |
- catch(InterruptedException e) {
- esta excepción se atraparía si algún otro Objeto quisiera despertar al hilo principal cuando está haciendo plácidamente su merecida siesta
- Logger.getLogger(ThreadApli.class.getName()).log(Level.SEVERE, null, ex);
- este código pertenece a una API de Java relacionada con el tratamiento de errores
- de momento lo que haremos es sustituir esta línea por la siguiente línea
...
System.out.println("ERROR: Interrupción del hilo principal");
...
|