Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial 10 - Thread - Sincronización
Tutorial 10 - Thread - Sincronización
Thread
Sincronizaci
n
Norman Salvador Aruz Lpez
-
Nota: El presente tutorial asume que usted ya sabe cmo crear, agregar
controles, formularios etc. a una aplicacin desde cero. Si usted no
maneja estas temticas se recomienda primero realizar los
tutoriales anteriores, y practicar continuamente para dominio de la
sintaxis.
En tutoriales anteriores aprendimos como pasar datos entre formularios,
esta vez dentro del tema de los hilos aprenderemos que un hilo compite por
el uso del procesador, por lo cual es importante sincronizar los procesos con
el objetivo de que las tareas se ejecuten en un orden debido.
Como vemos hemos agregado una variable pblica de tipo entero llamada
contador la cual ser accedida por todos los hilos que cambiarn su valor y
la imprimirn para poder observar la aleatoriedad con la que se ejecutan las
tareas cuando se trabaja con hilos.
El siguiente paso ser crear el primer hilo, para lo cual crearemos una clase
privada dentro de nuestra clase HilosConcurrencia que extiende de la
clase Thread que nos permitir hacer uso de hilos.
El cdigo es el siguiente:
Tercer Hilo
Cuarto Hilo
Quinto Hilo
Listo, ya tenemos declarado que tareas realizarn los hilos que crearemos
en los pasos posteriores, por lo pronto, har falta declarar dentro de la clase
principal un mtodo principal (main). Este mtodo se declara en la clase
principal (HilosConcurrencia), ten cuidado de no ponerlo dentro de las
clases hilos que acabamos de crear.
El primer mtodo que se ejecutar al correr la aplicacin ser el main, por
tanto aqu escribiremos un objeto que se crea a partir de la clase principal.
Puedes utilizar el bloque de cdigo a continuacin:
Corrida 2
Como puedes ver las salidas indican que los hilos acceden en un orden
aleatorio al recurso solicitado, a esto se le llama condicin de competencia,
los procesos siguen un orden diferente cada vez que el programa vuelve a
ejecutarse, por tanto la salida nunca es igual.
Listo, como puedes ver tambin marca un error, por lo cual lo encerraremos
con un try catch para evitar cualquier excepcin no esperada.
Hilo 3
Hilo 4
Hilo 5