Uso de hilos de ejecución (Threads)

Introducción a los procesos e hilos de ejecución

Cada vez que se lanza una nueva aplicación en Android el sistema crea un nuevo proceso Linux para ella y la ejecuta en su propia máquina virtual Dalvik (Por supuesto si está programada en Java, si lo estuviera en código nativo no haría falta la máquina virtual). Trabajar en procesos diferentes nos garantiza que desde una aplicación no se pueda acceder a la memoria (código o variables) de otras aplicaciones. Como se verá en un próximo capítulo esta característica se hereda directamente del sistema operativo Linux.

Los S.O. modernos incorporan el concepto de hilo de ejecución (thread). En un sistema multihilo un proceso va a poder realizar varias tareas a la vez, cada una en un hilo diferente. Los diferentes hilos de un proceso lo comparten todo: variables, código, permisos, ficheros abiertos, etc.

Cuando trabajamos con varios hilos, estos pueden acceder a las variables de forma simultánea. Hay que tener cuidado de que un hilo no modifique el valor de una variable mientras otro hilo está leyéndola. Este problema se resuelve en Java definiendo secciones críticas mediante la palabra reservada synchronized. Trataremos este problema más adelante.