Hilos
Los hilos no pueden ejecutarse ellos solos; requieren la supervisión de un proceso padre para correr.
Dentro de cada proceso hay varios hilos ejecutándose.
Por ejemplo, Word puede tener un hilo
en background chequeando automáticamente la gramática de lo que estoy escribiendo, mientras
otro hilo puede estar salvando automáticamente los cambios del documento en el queestoy
trabajando. Como Word, cada aplicación (proceso) puede correr varios hilos
los cuales están
realizando diferentes tareas.
Esto significa que los hilos están siempre asociados con un procesoen particular.
Los hilos a menudo son conocidos o llamados procesos ligeros. Un hilo, en efecto, es muy
similar a un proceso pero con la diferencia de que un hilo siempre corre dentro delcontexto de
otro programa. Por el contrario, los procesos mantienen su propio espacio de direcciones y
entorno de operaciones. Los hilos dependen de un programa padre en lo que se refiere a
recursos de ejecución. La siguiente figura muestra le relación entre hilos y procesos.
Un programa de flujo único o mono-hilvanado (single-thread) utiliza un único flujo de control (thread) paracontrolar su ejecución. Muchos programas no necesitan la potencia o utilidad de múltiples flujos de control. Sin necesidad de especificar explícitamente que se quiere un único flujo de control, muchos de los applets y aplicaciones son de flujo único.
Por ejemplo, en nuestra aplicación estándar de saludo:
public class HolaMundo
{
static public void main( String args[] )
{System.out.println( "Hola Mundo!" );
}
}
Aquí, cuando se llama a main(), la aplicación imprime el mensaje y termina. Esto ocurre dentro de un único thread.
La clase Thread
Es la clase que encapsula todo el control necesario sobre los hilos de ejecución (threads). Hay que distinguir claramente un objeto Thread de un hilo de ejecución o thread. Esta distinción resultacomplicada, aunque se puede simplificar si se considera al objeto Thread como el panel de control de un hilo de ejecución (thread). La clase Thread es la única forma de controlar el comportamiento de los hilos y para ello se sirve de los métodos que se exponen en las secciones siguientes.
Métodos de Clase
Estos son los métodos estáticos que deben llamarse de manera directa en la clase Thread.currentThread()
Este método devuelve el objeto thread que representa al hilo de ejecución que se está ejecutando actualmente.
yield()
Este método hace que el intérprete cambie de contexto entre el hilo actual y el siguiente hilo ejecutable disponible. Es una manera de asegurar que nos hilos de menor prioridad no sufran inanición.
sleep( long )
El método sleep() provoca que elintérprete ponga al hilo en curso a dormir durante el número de milisegundos que se indiquen en el parámetro de invocación. Una vez transcurridos esos milisegundos, dicho hilo volverá a estar disponible para su ejecución. Los relojes asociados a la mayor parte de los intérpretes de Java no serán capaces de obtener precisiones mayores de 10 milisegundos, por mucho que se permita indicar hasta nanosegundosen la llamada alternativa a este método.
Métodos de Instancia
Aquí no están recogidos todos los métodos de la clase Thread, sino solamente los más interesantes, porque los demás corresponden a áreas en donde el estándar de Java no está completo, y puede que se queden obsoletos en la próxima versión del JDK, por ello, si se desea completar la información que aquí se expone se ha de recurrir ala documentación del interfaz de programación de aplicación (API) del JDK.
start()
Este método indica al intérprete de Java que cree un contexto del hilo del sistema y comience a ejecutarlo. A continuación, el método run() de este hilo será invocado en el nuevo contexto del hilo. Hay que tener precaución de no llamar al método start() más de una vez sobre un hilo determinado.
run()...
Regístrate para leer el documento completo.