Java

Solo disponible en BuenasTareas
  • Páginas : 6 (1350 palabras )
  • Descarga(s) : 0
  • Publicado : 2 de septiembre de 2010
Leer documento completo
Vista previa del texto
En Java, los hilos comparten el mismo espacio de memoria. Incluso comparten gran parte del entorno de ejecución, de modo que la creación de nuevos hilos es mucho más rápida que la creación de nuevos procesos. La ventaja que proporcionan los hilos es la capacidad de tener más de un camino de ejecución en un mismo programa. Así, con un único proceso, ejecutándose una JVM (Java Virtual Machine),habrá siempre más de un hilo, cada uno con su propio camino de ejecución.
En cuanto al proceso de creación de hilos, son dos los mecanismos que nos permiten llevarlo a cabo en Java: implementando la interfaz Runnable, o extendiendo la clase Thread, esto es, creando una subclase de esta clase.
Lo más habitual es crear hilos implementando la interfaz Runnable, dado que las interfaces representan unaforma de encapsulamiento del trabajo que una clase debe realizar. Así, se utilizan para el diseño de requisitos comunes a todas las clases que se tiene previsto implementar. La interfaz define el trabajo, la funcionalidad que debe cubrirse, mientras que la clase o clases que implementan la interfaz realizan dicho trabajo (cumplen esa funcionalidad).
Todas las clases o grupos de clases queimplementen una cierta interfaz deberán seguir las mismas reglas de funcionamiento.
El otro mecanismo de creación de hilos, como ya hemos dicho, consistiría en la creación previa de una subclase de la clase Thread, la cual podríamos instanciar después.
Por ejemplo,
class Mi Thread extends Thread {
public void run() {
. . .
}
}
se corresponde con la declaración de un clase, Mi Thread, que extiendela clase Thread, sobrecargando el método Thread.run heredado con su propia implementación.
González et al.
5
Es en el método run donde se implementa el código correspondiente a la acción (la tarea) que el hilo debe desarrollar . El método run no es invocado directa o explícitamente (a menos que no quieras que se ejecute dentro de su propio hilo). En lugar de esto, los hilos se arrancan con elmétodo start, se suspenden con el método suspend, se reanudan con el método resume, y se detienen con el método stop (el cual supone también la muerte del hilo y la correspondiente excepción Thread Death?), como ya explicaremos en el apartado de Estado y Control de Hilos. Un hilo suspendido puede reanudarse en la instrucción del método run en la que fue suspendido.
En el caso de crear un hiloextendiendo la clase Thread, se pueden heredar los métodos y variables de la clase padre. Si es así, una misma subclase solamente puede extender o derivar una vez de la clase padre Thread. Esta limitación de Java puede ser superada a través de la implementación de Runnable. Veamos el siguiente ejemplo:
public class Mi Thread implements Runnable {
Thread t;
public void run() {
// Ejecución delthread una vez creado
}
}
En este caso necesitamos crear una instancia de Thread antes de que el sistema pueda ejecutar el proceso como un hilo. Además, el método abstracto run que está definido en la interfaz Runnable tiene que implementarse en la nueva clase creada.
La diferencia entre ambos métodos de creación de hilos en Java radica en la flexibilidad con que cuenta el programador, que esmayor en el caso de la utilización de la interfaz Runnable.

Sobre la base del ejemplo anterior, se podría extender la clase Mi Thread a continuación, si fuese necesario. La mayoría de las clases creadas que necesiten ejecutarse como un hilo implementarán la interfaz Runnable, ya que así queda cubierta la posibilidad de que sean extendidas por otras clases.
Por otro lado, es un error pensar que lainterfaz Runnable está realizando alguna tarea mientras un hilo de alguna clase que la implemente se está ejecutando. Es una interfaz, y como tal, sólo contiene funciones abstractas (concretamente una única, run), proporcionando tan solo una idea de diseño, de infraestructura, de la clase Thread, pero ninguna funcionalidad. Su declaración en Java tiene el siguiente aspecto:
package Java.lang;...
tracking img