elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Timer & TimerTask
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Timer & TimerTask  (Leído 1,621 veces)
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Timer & TimerTask
« en: 29 Julio 2015, 22:28 pm »


La clase Timer es una clase muy útil para situaciones particulares. Estas situaciones pueden ser por ejemplo, cuando necesitamos hacer algo cada X tiempo. Quizás hayas visto en algunas webs que aparecen ofertas o anuncios cada X tiempo, pues bien, esto se hace gracias a los Timers.

Vamos a realizar un pequeño timer que hace un conteo regresivo imprimiendo en pantalla la hora actual. Primero hagamos una clase que muestre la hora actual.

Código
  1. public class Display {
  2.  
  3.    public void printTime(int hour, int minute, int second) {
  4.        String fullHour = "";
  5.  
  6.        fullHour += (hour > 9) ? ":" + hour : "0" + hour;
  7.        fullHour += (minute > 9) ? ":" + minute : ":0" + minute;
  8.        fullHour += (second > 9) ? ":" + second : ":0" + second;
  9.  
  10.        System.out.println(fullHour);
  11.    }
  12. }

Nada del otro mundo, solo le da formato a una hora recibida como 3 parámetros: hora, minuto y segundo. Esta clase la usaremos en el Timer para mostrar la hora actual.

Código
  1. import java.util.Timer;
  2. import java.util.TimerTask;
  3.  
  4. public class Timeout {
  5.  
  6.    private int hour = 0;
  7.    private int minute = 0;
  8.    private int second = 11;
  9.    private Timer timer;
  10.    private boolean isTimerRunning;
  11.    private Display display;
  12.  
  13.    public Timeout() {
  14.        timer = new Timer();
  15.        display = new Display();
  16.    }
  17.  
  18.    TimerTask task = new TimerTask() {
  19.        @Override
  20.        public void run() {
  21.            isTimerRunning = true;
  22.            if(second > 0) {
  23.                second--;
  24.            } else {
  25.                second = 59;
  26.                if(minute > 0) minute--;
  27.                else {
  28.                    minute = 59;
  29.                    if(hour > 0) hour--;
  30.                    // si segundo = 0, minuto = 0 y hora = 0,
  31.                    // cancelamos el timer
  32.                    else {
  33.                        isTimerRunning = false;
  34.                        timer.cancel();
  35.                        timer.purge();
  36.                    }
  37.                }
  38.            }
  39.            if(isTimerRunning)
  40.                display.printTime(hour, minute, second);
  41.        }
  42.    }; // fin timertask
  43.  
  44.    public void start(int timeout, int interval) {
  45.        timer.schedule(task, timeout, interval);
  46.    }
  47.  
  48. } // fin clase

El código es autoexplicado. En lo que debemos de fijarnos es el TimerTask. La TimerTask nos permite realizar tareas en un thread separado. Esto es así, porque por lo general, cuando usamos un Timer es para que se esté ejecutando cada cierto tiempo un código de forma paralela, esto eso, multithreading programming (programación multi hilo). El código del TimerTask solo hace una serie de comprobaciones para disminuir la hora, minuto y segundo. Luego, llama al método printTime del objeto Display, pasándole la hora, minuto y segundo y que este método dará forma e imprimirá.

Para empezar un timer, debemos de llamar al método schedule el cual recibe 3 parámetros:

  • Un objeto TimerTask
  • Un timeout (tiempo de espera para que empiece a ejecutarse)
  • Un intervalo (la tarea se ejecutará cada X tiempo)

Los dos últimos parámetros se debe especificar en milisegundos, así, 1000 es equivalente a 1 segundo. Por último, hagamos nuestra clase principal.

Código
  1. public class TimerTest {
  2.  
  3.    public static void main(String[] args) {
  4.        Timeout timeout = new Timeout();
  5.        timeout.start(0, 1000);
  6.    }
  7. }

En la clase principal decimos que el timer tendrá un delay de 0s y un intervalo de 1s. Si compilamos y corremos:

Código
  1. javac Display.java
  2. javac Timeout.java
  3. javac TimerTest.java
  4.  
  5. java TimerTest

Obtendremos lo siguiente:


¿Posibilidades? La que puedas imaginar, así que piensa como sacarle provecho en tu próximo proyecto.


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Timer Grande
Programación Visual Basic
Meg 8 5,548 Último mensaje 18 Febrero 2006, 19:14 pm
por zhidow
Problema con Timer
Programación Visual Basic
CsarGR 1 1,319 Último mensaje 15 Febrero 2006, 20:53 pm
por BenRu
Problema Timer
Programación Visual Basic
XP. 8 2,344 Último mensaje 13 Abril 2006, 06:45 am
por XP.
timer en php
PHP
Mr.Chispa 2 3,250 Último mensaje 4 Octubre 2006, 16:49 pm
por Mr.Chispa
timer en java
Java
pedraxito 7 15,440 Último mensaje 20 Abril 2008, 09:16 am
por Lu15_CL4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines