Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Timer

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Instituto Tecnológico Superior

De Comalcalco
Timer
Ingeniería:
Electrónica
Módulo:
Programación Visual
Docente:
Elías Rodríguez Rodríguez
Alumno:
Ángel Gustavo del Ángel Magaña-TE210698
Grupo: 4to A
Turno: Matutino
Que es Timer?
El timer es un objeto que tiene como funcionalidad ejecutar una función o bloque
de código cada cierto tiempo. Esto tiene muchas aplicaciones ya que no depende
de la acción por parte de usuario para ejecutar cierto código. También se puede
hacer que cuente tiempo la propiedad define la longitud de los Interval intervalos,
cuyo valor está en milisegundos. Cuando el componente está habilitado, Tick el
evento se genera cada intervalo.

Como se aplica en java


Al programar es posible que nos veamos con la necesidad de realizar una tarea
cada cierto tiempo. Por ejemplo, si queremos pintar un reloj en pantalla, cada
segundo debemos mover o repintar el segundero. Quizás deseemos ver cuándo
se crea un fichero, con lo que podemos, por ejemplo, cada diez segundos ver si
existe. En fin, hay un montón de posibles aplicaciones en las que podemos
necesitar realizar tareas periódicamente.
Java nos proporciona dos clases distintas que nos ayudan a esta tarea. Son las
clases javax.swing.Timer y java.util.Timer. A ambas clases les decimos cada
cuánto queremos el aviso (por ejemplo, un aviso cada segundo en el caso del
reloj) y ellas se encargan de llamar a un método que nosotros hayamos
implementado. El resultado es que ese método (el que pinta el segundero en la
pantalla), se llamará cada cierto tiempo (una vez por segundo en el caso del reloj).
javax.swing.Timer
Esta clase es más sencilla de usar. Basta con instanciarla pasándole cada cuánto
tiempo (en milisegundos) queremos que nos avise y un ActionListener, cuyo
método actionPerformed() se ejecutará periódicamente. Luego sólo hay que llamar
al método start() cuando queramos que el Timer empiece a contar. El código
puede ser similar a este:
Timer timer = new Timer (tiempoEnMilisegundos, new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
// Aquí el código que queramos ejecutar.
}
});

timer.start();
Tenemos también el método stop() para parar el Timer, setRepeats(boolean) para
hacer que sea repetitivo o no, etc, etc. Bueno, no es cuestión de poner aquí toda
la API de java.
java.util.Timer
Esta clase es más general, tiene más opciones, pero es algo más compleja de
usar. Para arrancarlo hay que llamar a alguno de los métodos schedule(). No voy a
detallarlos todos porque para eso está la API, pero nos dan bastantes
posibilidades. Podemos decirle cosas complejas, como por ejemplo, que «a partir
del 22 de febrero de 2007, a las 17:00 empieza a darme avisos cada 5 minutos», o
bien podemos decirle cosas sencillas, como «avísame una sola vez dentro de 5
minutos».
Dentro de los avisos repetitivos hay incluso dos opciones.
• Con los métodos schedule(), si por ejemplo, el aviso es repetitivo cada
segundo, es posible que el ordenador esté bastante ocupado haciendo
otras cosas, con lo que el aviso nos puede llegar con un cierto retraso. Con
esta opción el retraso se acumula de una llamada a otra. Si el ordenador
está muy atareado y nos da avisos cada 1.1 segundos en vez de cada 1, el
primer aviso lo recibimos en el segundo 1.1, el segundo en el 2.2, el tercero
en el 3.3, etc, etc. Si hacemos nuestro reloj de esta forma, cogerá adelantos
o retrasos importantes en poco tiempo.
• La otra opción son los métodos scheduleAtFixedRate(). Con estos métodos
los avisos son relativos al primer aviso, de esta forma, si hay retraso en un
aviso, no influye en cuando se produce el siguiente. Igual que antes, si el
ordenador está muy ocupado y da avisos cada 1.1 segundos en vez de
cada segundo, el primer aviso se recibirá en el segundo 1.1, el segundo en
el 2.1, el tercero en el 3.1, etc. El retraso no se va acumulando. Está claro
que para hacer un reloj, como es nuestro ejemplo, debemos usar la
segunda forma (métodos scheduleAtFixedRate() en vez de schedule()).
Para el ejemplo de nuestro reloj, se crea el Timer instanciándolo con un
constructor sin parámetros. Luego debemos llamar al
método scheduleAtFixedRate(). A este método hay que pasarle tres parámetros:
• Una clase TimerTask. Dicha clase tiene un método run() (Puesto
que TimerTask es una clase abstracta, debemos hacer una clase hija de
ella e implementar el método run()) y que es al que se llamará cada cierto
tiempo. Ahí debemos poner nuestro código.
• Usaremos la versión del método en el que el segundo parámetro es
un long, que es a partir de cuántos milisegundos queremos que empiece a
avisarnos. Si ponemos cero, empezará a avisarnos inmediatamente.
• Como tercer parámetro lleva otro long, que es cada cuántos milisegundos
queremos recibir el aviso.
El código de ejemplo para el reloj puede ser como este
// Clase en la que está el código a ejecutar
TimerTask timerTask = new TimerTask()
{
public void run()
{
// Aquí el código que queremos ejecutar.
}
};
….
// Aquí se pone en marcha el timer cada segundo.
Timer timer = new Timer();
// Dentro de 0 milisegundos avísame cada 1000 milisegundos
timer.scheduleAtFixedRate(timerTask, 0, 1000);

Ejemplos:
En este ejemplo, se usa la función Timer para pausar la aplicación. En el ejemplo
también se usa DoEvents para producir a otros procesos durante la pausa:

Estoy creando un programa en C# que me ayude a recordar cuando tomar mis


medicinas. Para ello me pregunta si he tomado la pastilla y si es sí reinicial el
programa 48 horas después.

De momento he creado un timer de 2 segundos para comprobar si funcioma, pero


no consigo hacer pasar ese tiempo.

Espero me puedan ayudar, de momento mi código es el siguiente:


Este es un ejemplo del método clearTimeout() en acción:

Este método setInterval() devuelve un intervalID positivo que ayuda a identificar el


temporizador. Este valor se puede utilizar para clearInterval().

Código de ejemplo:
Hemos creado una clase pública llamada clase StopWatch. Tiene su constructor
público, que toma tiempo en segundos. En el bloque constructor, se crea una
instancia de temporizador. En la instancia del temporizador, se llama al
método schedule. Esta tarea de método consiste en programar el evento
específico en la cantidad de tiempo dada. Se necesitan dos parámetros,
instancia TimerTask y el retardo. Definimos el retraso en milisegundos. El método
arroja IllegalArgumentException cuando el retraso dado definido no es
válido, IllegalArgumentException cuando la tarea proporcionada ya está
programada o cancelada. También lanza NullPointerException cuando la instancia
de tarea proporcionada es nula.

También podría gustarte