Procesos e hilos
Un sistema operativo como Windows permite ejecutar muchos procesos simultáneamente, por ejemplo se puede navegar en internet con un navegador web, abrir un documento en Word, ejecutar el reproductor de música de Windows, y mantener una conversación con un amigo al mismo tiempo, a esto se le llama multitarea.
Tipos de Hilos
Existen 2 tipos de hilos:
Hilos Usuario
Los hilos creados por usuarios (programadores) se llaman hilos usuarios. Los hilos usuario se ejecutan en primer plano. La JVM no finalizara cuando un hilo usuario este todavía corriendo. Sin embargo cuando todos los hilos usuarios han finalizado su ejecución, la JVM terminara todos los hilos demonios, incluyendo el recolector de basura, y terminara.
El hilo principal main es un hilo de usuario.
Hilos Demonios
La mayoría de estos hilos demonios son creados por la JVM, estos son creados para tareas como recolección de basura y la implementación AWT. Ellos generalmente se ejecutan en segundo plano. Son creados para dar servicios a los hilos usuarios.
Se puede utilizar el método isDaemon() para revisar si un hilo en particular es un hilo demonio o no.
Ciclo de vida de los Hilos
Un hilo se crea y finalmente se termina, un hilo puede pasar a través de varios estados entre se creación y destrucción.
Un hilo se crea a partir de una subclase Thread, una instancia de Java.Lang.Thread, como también es posible crear una clase hilo usuario implementando la interfaz Runnable.
A partir de la creación de un hilo, se dice que está en el estado “nuevo”, en este momento el hilo no se está ejecutando, cuando se invoca el método start() el hilo cambia a estado “ejecutable” esto indica que el hilo está vivo y listo para ser ejecutado.
El hilo cambia de estado ejecutable a no ejecutable cuando ocurre uno de los siguientes eventos:
Como crear Hilos
Existen 2 formas de crear hilos en java:
Sincronización de Hilos
Un recurso crítico es aquel que puede ser usado solo por un usuario a la vez, si varios usuarios acceden al recurso crítico simultáneamente, se puede llegar a un estado inconsistente. Cuando varios hilos en paralelo compiten por un recurso crítico compartido, debe haber un proceso para asegurar que este recurso será usado solo por un hilo a la vez., este proceso se llama sincronización.
Condición de carrera
Esta se define como el comportamiento irregular causado por una dependencia inesperada con relación a la ocurrencia relativa en el tiempo de los eventos.
En otras palabras, este comportamiento inesperado ocurre cuando un programador asume incorrectamente que un evento en particular ocurrirá siempre antes que otro.
próximo post tendremos códigos de ejemplo y explicación