Hilos en Java (Thread) I


La programación en hilos en Java, o mejor dicho la programación concurrente en más sencilla de implementar de lo que parece, aunque primero antes de entrar en detalles de cómo hacerlo, en este post, hablaremos de que son.

–          Que es un Thread

Un thread es un proceso ligero (en el caso que vamos a ver Java) que comparte memoria con otros iguales.

–          Qué ventajas tiene

La primera ventaja radica en que es más fácil para el planificador, intercambiar entre los procesos Thread, ya que son más ligeros, que entre otros procesos.

–          Paralelo vs Concurrente

Paralelos son dos procesos que se ejecutan al mismo tiempo, porque existen varios procesadores en los que ejecutarse, o uno con varios núcleos, que resuelven un único problema en menos tiempo.

Concurrente es un proceso paralelo que nada tienen que ver entre sí, comparten un espacio de memoria, pero no hacen una tarea común.

–          Problemas habituales

El primer problema habitual en el uso de Threads, está que al ser dos tareas concurrentes, podría darse una situación conocida como la exclusión mutua (que consiste en que dos o más procesos no se dejan terminar unos a otros, porque se bloquean entre ellos). Un ejemplo de exclusión mutua, es que por ejemplo un proceso A necesite los ficheros A y B para terminar y solo tenga A, y un proceso B, necesite también los ficheros A y B, y solo tenga B, de tal forma que ninguno de los dos puede acabar nunca, porque tienen el fichero que el otro necesita para terminar bloqueado.

Otro Problema habitual es el de la visibilidad de los cambios, suele ser habitual, que no sea fácil de gestionar, como se ven los cambios, en los procesos que son paralelos, ya que, si se realiza una actualización sobre algún dato, no siempre estará disponible al instante para otros procesos.

Como se implementa en Java, esto queda para la segunda entrega de este post, que enlazaré aquí cuando esté hecho, pero hablaremos de run() y synchronized()

Comparte tu opinión

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s