Beruflich Dokumente
Kultur Dokumente
“SINCRONIZACIÓN DE THREADS”
Integrantes:
Alberto Carrera
Maycol Pacha
Tutor:
SANGOLQUÍ-ECUADOR
CONTENIDO
1 ESTADOS DE LOS THREADS...................................................................................................................................4
1.1 NUEVO............................................................................................................................................................ 4
1.2 EJECUTABLE...................................................................................................................................................4
1.3 BLOQUEADO...................................................................................................................................................4
1.4 MUERTO............................................................................................................................................................4
2 EJERCICIO PRÁCTICO..................................................................................................................................................5
3 CÓDIGO PROGRAMA...............................................................................................................................................10
4 CONCLUSIONES.........................................................................................................................................................11
5 REFERENCIAS..............................................................................................................................................................11
Figure 1 Estados de los Threads...................................................................................................5
Figure 2 Creación Clase SincronizandoHilos.................................................................................5
Figure 3 Creación de Clase HilosVarios.........................................................................................5
Figure 4 Creación de Instancia.....................................................................................................6
Figure 5 Ejecución del Programa..................................................................................................6
Figure 6 Creación Hilo 2...............................................................................................................7
Figure 7 Implementación del método getName()........................................................................7
Figure 8 Ejecución del Programa..................................................................................................7
Figure 9 Implementación del método sleep()..............................................................................8
Figure 10 Implementación del método join()...............................................................................8
Figure 11 Ejecución del Programa................................................................................................9
Figure 12 Implementación método join().....................................................................................9
Figure 13 Ejecución del Programa..............................................................................................10
1.1 NUEVO
Cuando un hilo está en este estado, es simplemente un objeto Thread vacío. El sistema
no ha destinado ningún recurso para él. Desde este estado solamente puede arrancarse
llamando al método start(), o detenerse definitivamente, llamando al método stop().
1.2 EJECUTABLE
La llamada al método start() creará los recursos del sistema necesarios para que el hilo
puede ejecutarse, lo incorpora a la lista de procesos disponibles para ejecución del
sistema y llama al método run() del hilo de ejecución.
Cuando el hilo se encuentra en este estado, todas las instrucciones de código que se
encuentren dentro del bloque declarado para el método run(), se ejecutarán
secuencialmente.
1.3 BLOQUEADO
El hilo de ejecución entra en estado Parado cuando alguien llama al método suspend(),
cuando se llama al método sleep(), cuando el hilo está bloqueado en un proceso de
entrada/salida o cuando el hilo utiliza su método wait() para esperar a que se cumpla
una determinada condición. Cuando ocurra cualquiera de las cuatro cosas anteriores, el
hilo estará Parado.
1.4 MUERTO
Un hilo que contenga a este método run(), morirá naturalmente después de que se
complete el bucle y run() concluya.
2 EJERCICIO PRÁCTICO
Creación de clase principal:
A continuación, creamos la “clase hilos varios” misma que va a heredar de thread y
sobrescribimos el método run() el cual va a tener un bucle for para imprimir por
consola un mensaje.
Figure 3 Creación
de Clase HilosVarios
En la clase principal, creamos una instancia de la clase hilos varios para llamar a su
instancia “start()”.
Para poder distinguir que efectivamente se está ejecutando los dos hilos se utilizara
el método “getName()” que devolverá el nombre del hilo, java crea nombres
internos que van desde hilo-0 hasta hilo-n.
Una
vez ejecutado el programa podemos observar cómo se imprimen por pantalla cada
uno de los hilos creados.
Para sincronizar hilos se puede utilizar el método “join” que espera hasta que un hilo
se complete hasta su muerte, para empezar otro hilo.
Hay que tener en consideración que el “main” como tal también representa un hilo
en ejecución es por ello que si se desea que este termine una vez se han ejecutado
todos los hilos creados tenemos que utilizar el método ya mencionado “join”.
3 CÓDIGO PROGRAMA
Tabla 1 Código del Programa- Sincronización de Hilos
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author mjpacha
*/
public class SincronizandoHillos {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws InterruptedException {
// TODO code application logic here
HilosVarios hilo1=new HilosVarios();
HilosVarios2 hilo2=new HilosVarios2(hilo1);
hilo1.start();
hilo2.start();
System.out.println("Terminadas las tareas");
}
}
4 CONCLUSIONES
Se concluye que cuando dos o más hilos necesitan acceder de manera simultánea a
un recurso de datos compartido necesitan asegurarse de que sólo uno de ellos accede
al mismo cada vez. Java proporciona un soporte único, a nivel de lenguaje, para
dichas tareas de sincronización.
5 REFERENCIAS
[1] Tomado de: “Curso Java. Threads IV”
Sincronización de Threads I
https://www.youtube.com/watch?v=TjcqR-twOXw