Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Abstract.- It is the class that encapsulates all the necessary control over the
threads of execution (threads). A Thread object must be clearly distinguished
from a thread or thread. This distinction is complicated, although it can be
simplified if the object is considered. Theme as the control panel of a thread of
execution (thread).
I. OBJETIVOS
Identificar el manejo de hilos en java.
Identificar el manejo de los temporizadores en java.
II. INTRODUCCIÓN
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 resulta complicada, aunque se puede
simplificar si se considera al objeto Thread como el panel de control de un hilo
de ejecución (thread).
Los Hilos o los “Threads” en Java, son básicamente una forma de poder ejecutar
varios procesos simultáneamente en nuestros programas en Java.
Usualmente para poder utilizarlos tenemos que crear clases que extienden a la clase
Thread, y reescribir el método principal “run()”, el cual es el que se va a ejecutar
principalmente al iniciar un hilo, thread o nuevo proceso en java.
En java existen dos formas distintas de crear un nuevo hilo, heredando de la clase
Thread o implementando la Interfaz Runnable. Si utilizamos la opción de implementar
la interfaz Runnable, más tarde tendremos que utilizarlo de parámetro en una nueva
instancia de la clase Thread para inicializarlo. Veamos un Ejemplo utilizando estas dos
formas de crear hilos en java, se crearan dos hilos, uno creado heredando de la clase
Thread y otro implementándolo de la interfaz Runnable , también veremos la forma de
inicializarlos y el resultado al ejecutarlo, Veamos.
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 Clases
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 el inté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 nanosegundos en la llamada alternativa a este
método.
Creación de un Thread
Hay unas cuantas diferencias entre interfaz y clase, que ya son conocidas y
aquí solamente se resumen. Primero, un interfaz solamente puede contener
métodos abstractos y/o variables estáticas y finales (constantes). Las clases,
por otro lado, pueden implementar métodos y contener variables que no sean
constantes. Segundo, un interfaz no puede implementar cualquier método. Una
clase que implemente un interfaz debe implementar todos los métodos
definidos en ese interfaz. Un interfaz tiene la posibilidad de poder extenderse
de otros interfaces y, al contrario que las clases, puede extenderse de múltiples
interfaces. Además, un interfaz no puede ser instanciado con el operador new;
por ejemplo, la siguiente sentencia no está permitida:
Temporizadores en Java
Los timers son una herramienta muy útil para lanzar una tarea cada cierto tiempo, por
ejemplo, si estamos conectados a un servidor, podemos enviar información de estado
para no desconectarnos, o lanzar una tarea a una hora determinada, o incluso puede
servir para crear una animación (ya que con el tiempo va variando aquello que
hayamos dibujado, o va cambiando el fotograma).
Ejemplo:
La salida de este programa será un TIC / TOC alternativamente cada segundo por la
consola, ya que la tarea la programamos cada 1000ms. Es extremadamente fácil, en
principio tenemos que crear un objeto TimerTask que defina la tarea que vamos a
ejecutar dentro de su método run(). Luego cargaremos un Timer, y con su método
schedule llamaremos a la tarea, indicándole el tiempo que debe esperar para
empezar y el tiempo tras el cual repetirá la tarea de forma indefinida.
Por otro lado, cabe mencionar que junto con schedule() tenemos otro método,
scheduleAtFixedRate, la diferencia es que si ocurren retrasos en la ejecución de las
tareas, por ejemplo, que esté nuestra aplicación haciendo otras cosas y en lugar de
1000ms, en una de las ejecuciones se tarden 1500, la tarea se ejecutará a los 500ms
para compensar. Si el retraso es más grande, se ejecutará varias veces hasta
recuperar el ritmo. schedule(), si se retrasa no hará nada, dentro de 1000ms volverá a
ejecutar de nuevo la tarea.
IV. CONCLUSIÓN
Se puede ver las 2 formas de crear hilos en java funciona correctamente y son igual de
fácil de implementar, el método setPriority recibe como parámetro el valor que
queremos darle de prioridad al proceso en si, como valor máximo es 10 y como valor
mínimo es 1. Al cambiar este valor podemos ver reflejado el cambio en el orden en que
termina de ejecutarse uno u otro hilo debido a la prioridad que se maneje. El uso
correcto de hilos en java optimiza nuestros programas al trabajar de mejor manera el
uso de recursos del sistema.
V. REFERENCIAS
[1] http://vis.usal.es/rodrigo/documentos/aso/JavaHilos.pdf
[2]http://dhw.umh.es/alex-bia/teaching/PC/material/hilos_tutorial-java/cap10-
2.htm