Hilos proceso java
Los hilos de proceso (threads) representan uno de los recursos más importantes de los que dispone un programador para crear aplicaciones complejas donde puede ser conveniente, o incluso necesario, realizar varias tareas de manera simultánea. El mecanismo de hilos de proceso de Java es sencillo, potente y productivo. De hecho muchos de los estándares de laplataforma Java, como por ejemplo los applets o los servlets, emplean hilos de proceso para llevar cabo algunas tareas en paralelo. Todo esto sucede de forma transparente al programador pero conviene entender y comprender cómo funciona con el fin de llegar a escribir aplicaciones que crean y usan sus propios hilos de manera explícita.
Probablemente la concurrencia ha sido siempre uno de los asuntosmás espinosos de la programación. Por otro lado, la forma en la que los lenguajes tradicionales la han implementado no resultaba de gran ayuda para enfrentarse a los retos de un tipo de programación que ya es bastante compleja por sí misma. Sin embargo, existen muchos casos en los que es deseable dividir las tareas de una aplicación haciendo posible que algunas de ellas se ejecutenconcurrentemente. Ello puede contribuir decisivamente en el rendimiento, especialmente si se trabaja en entornos con varios procesadores o si se desarrollan aplicaciones distribuidas, como por ejemplo las aplicaciones web.
Java dispone de un mecanismo de hilos de proceso que permite crear este tipo de aplicaciones de una forma considerablemente fácil. Gran parte de los estándares de la plataforma Java empleanhilos de proceso de manera implícita, es decir, sin que el programador tenga que ser consciente de ello. Muchas de las estructuras de datos proporcionadas por la API estándar de Java están preparadas para afrontar las operaciones de lectura y escritura simultánea. En estos casos Java realiza la mayor parte del trabajo que implican los hilos de proceso, y por ello no es preciso que el programadorentienda todas y cada una de dichas tareas que subyacen. Sin embargo, aunque no sea necesario sí que es conveniente, ya que ello constituye el paso previo para que el programador sea después capaz de implementar mecanismos equivalentes en sus propias aplicaciones.
En este artículo se estudiarán los fundamentos teóricos de los hilos de proceso, utilizando además un estándar de Java, como son losservlets, como ejemplo. Posteriormente se verá cómo el programador puede introducir el empleo de hilos de proceso dentro de sus aplicaciones.
Hilos de proceso frente a procesos
Un proceso puede definirse como un programa y toda la información que necesita para ejecutarse, lo que incluye aspectos tales como la memoria, los registros, etc. El problema es que tradicionalmente se ha venido utilizandoel concepto de proceso con el fin de alcanzar dos objetivos distintos: por un lado el paralelismo o la concurrencia, y por otro la seguridad. El primero consiste en dividir las aplicaciones en distintos procesos de forma que cada uno de ellos se ejecute concurrentemente. En lo que respecta al segundo de los objetivos, los procesos también se utilizan para proteger a los usuarios entre sí. Así porejemplo, si un proceso trata de acceder a una zona de memoria que se encuentra fuera del espacio que le ha sido asignado, el sistema lo detecta y lo impide.
Éstas son actividades no sólo diferentes, sino que son objetivos de diseño contrapuestos y la consecución de uno siempre se logra en detrimento del otro. Por ello, la primera consecuencia de esta contradicción de metas es que generalmentelos procesos no pueden compartir recursos, medida de protección que se toma para evitar problemas de seguridad. Así por ejemplo, en general un proceso no conoce ni puede acceder a las variables de otro proceso. Entonces, ¿qué ocurre cuando los procesos necesitan compartir información? No queda más remedio que acudir a técnicas de comunicación entre procesos, lo que incrementa notablemente la...
Regístrate para leer el documento completo.