post icon

Crear un Timer en Java

En Java a diferencia de otros lenguajes no tenemos un objeto timer tan fácil de manipular, existe por suerte la clase que nos ayudará pero la implementación es un tanto más larga. Debemos crear manualmente las tareas a ser asignadas, los métodos de inicio, detención y reinicio.

En éste ejemplo sencillo mostraré como imprimir simplemente el tiempo que va pasando con el timer. Pero ustedes podrán agregar más código en la clase llamada MiTarea, incluso podrán crear varias sub clases e ir asignando al schedule del timer y el período de ejecución que van necesitando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package comunes;
 
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
 
public class Reloj {
 
	Timer timer = new Timer(); // El timer que se encarga de administrar los tiempo de repeticion
	public int segundos; // manejar el valor del contador
	public boolean frozen; // manejar el estado del contador TIMER AUTOMATICO -- True Detenido | False Corriendo
 
	// clase interna que representa una tarea, se puede crear varias tareas y asignarle al timer luego
	class MiTarea extends TimerTask {
		public void run() {
			segundos++;
			System.out.println(segundos);
			// aqui se puede escribir el codigo de la tarea que necesitamos ejecutar
		}// end run()
	}// end SincronizacionAutomatica
 
	public void Start(int pSeg) throws Exception {
		frozen = false;
		// le asignamos una tarea al timer
		timer.schedule(new MiTarea(), 0, pSeg * 1000 * 60);
	}// end Start
 
	public void Stop() {
		System.out.println("Stop");
		frozen = true;
	}// end Stop
 
    public void Reset() {
		System.out.println("Reset");
		frozen = true;
		segundos = 0;
	}// end Reset
 
}// end Reloj

3 Comentarios

Deja tu Comentario
  1. stiven Google Chrome Windows
    8 octubre 2011 at 15:44 #

    como hago para que detenga el contador??? omas bien cual es la forma correcta de instanciar o llamar los metodos en el main???

  2. executor BOLIVIA Google Chrome Mac OS
    25 julio 2011 at 11:15 #

    mmm tengo una duda ..sabes como usar un timer con un webservice?, la idea es la de poder controlar el tiempo de conexion ..si este sobrepasa x tiempo que el timer corte la conexion .
    ojala me ayudes ocn este problemita

    • GeekZero PARAGUAY Google Chrome Windows
      25 julio 2011 at 11:21 #

      No hace falta que reinvestes la rueda con un timer, simplemente puedes setear el timeout de tu WS..

Responder