La multitarea nos permite dividir el flujo del programa en distintas partes que pueden correr a la vez, de forma síncrona o asíncrona.
Podremos aplicar la multitarea cuando haya varias acciones a realizar y cada una sea independiente de la otra, de tal forma que la realización de una, no dependa de ninguna otra
Un ejemplo clásico podría ser una aplicación en la que el usuario solicita descargar “n” documentos. La primera posibilidad sería dar la orden de lectura, dejando al usuario esperando que se termine de cargar, la otra opción sería que, tras dar la orden de lectura, permitiéramos a nuestro usuario el ir revisando los documentos que ya se hayan descargado, y mientras tanto, seguir descargando el resto.
Cuando se inicia un programa en Java, la máquina virtual crea un hilo principal
- El hilo invoca al método main, que se comienza a ejecutar
- El hilo termina cuando se acaba de ejecutar el método main
- Si el hilo principal crea otros hilos, éstos comenzarán su ejecución de forma concurrente
- Cuando no queda ningún hilo activo, termina el programa
Proceso/Programa. Un proceso es la gestión de un flujo de control, visto en su totalidad, y que puede gestionar uno o varios hilos; si lanzamos varios procesos o un mismo proceso varias veces, tendremos varios trabajos corriendo concurrentemente
Características
- Disponen de su propio espacio de memoria
- La comunicación entre ellos se realiza con pipes y sockets
Hilo: Es un único flujo de control definido por nuestro programa. Si nuestro programa lanza varios hilos, tendremos varios trabajos corriendo concurrentemente, pero, y esa es la diferencia, compartiendo datos y código
Características
- Ejecución simultanea dentro de un proceso
- Espacio de memoria compartido
Multitarea: En nuestro entorno, es la posibilidad de hacer correr varios hilos a la vez
Sincronización: Es el mecanismo que nos permite controlar el acceso a un único recurso desde varios hilos.
En este apartado, veremos cómo hacer clases que puedan lanzar uno o varios hilos para ejecutar tareas de forma concurrente