PDA

View Full Version : [JAVA] come si fa un timer?


dierre
28-08-2006, 13:29
Mi serve in pratica che il programma legga un valore (ggmmaaaa hh:mm) e se è appunto arrivata l'ora, lo segnali con un bip.
Mi basta anche qualche link da google. Il problema è che non so cosa cercare esattamente.

andbin
28-08-2006, 13:41
Mi serve in pratica che il programma legga un valore (ggmmaaaa hh:mm) e se è appunto arrivata l'ora, lo segnali con un bip.
Mi basta anche qualche link da google. Il problema è che non so cosa cercare esattamente.Guarda la classe java.util.Timer e java.util.TimerTask.

Per maggiori info, prova a leggere <qui> (http://www.onjava.com/pub/a/onjava/2004/03/10/quartz.html), <qui> (http://www-128.ibm.com/developerworks/java/library/j-schedule.html).

aduri
28-08-2006, 14:51
Questa e' una semplice implementazione con l'oggetto timer.
Lo puoi utilizzare come esempio per derivare una tua applicazione.
Attenzione che qua implementa solo i msec.


public class FibTime
{ public static void main(String[] args)
{ ConsoleReader console = new ConsoleReader(System.in);
System.out.println("Immettere n: ");
int n = console.readInt();

// usa il cronometro per rilevare i tempi del calcolo dei numeri di Fibonacci

Cronometro timer = new Cronometro();

timer.start();
int f = fib(n);
timer.stop();

System.out.println("fib(" + n + ") = " + f);
System.out.println("Tempo trascorso = "
+ timer.getElapsedTime() + " millisecondi");
}

/**
Calcola un numero di Fibonacci.
@param n un intero
@return l'ennesimo numero di Fibonacci
*/
public static int fib(int n)
{ if (n <= 2) return 1;
else return fib(n - 1) + fib(n - 2);
}
}

dierre
28-08-2006, 15:00
Vi ringrazio, do un'occhiata e se ho dubbi chiedo.

dierre
28-08-2006, 20:12
Va bene l'impostazione del programma?



public class ControlloGiocatori {
Toolkit toolkit;
Timer timer;

public ControlloGiocatori() {
toolkit = Toolkit.getDefaultToolkit();
timer = new Timer();
timer.schedule(new Reminder(),
0, //delay iniziale
1*1000); //così lo fa ogni secondo giusto?
}

class Reminder extends TimerTask {

public void run() {
//fai quello che devi fare
// se condizione valida
toolkit.beep()
}
}
}


Per farlo ogni minuto è 60*1000 giusto?

andbin
29-08-2006, 09:23
Va bene l'impostazione del programma?Sì, dico che è ok. Io personalmente avrei evitato di mettere la classe Reminder come classe innestata (ma non so bene cosa devi fare di preciso, quindi la tua soluzione potrebbe anche essere l'ideale). L'avrei messa come normale classe "top-level" mettendo all'interno il Toolkit toolkit; e poi un costruttore che inizializza toolkit.

Per farlo ogni minuto è 60*1000 giusto?Sì.

dierre
29-08-2006, 09:57
Sì, dico che è ok. Io personalmente avrei evitato di mettere la classe Reminder come classe innestata (ma non so bene cosa devi fare di preciso, quindi la tua soluzione potrebbe anche essere l'ideale). L'avrei messa come normale classe "top-level" mettendo all'interno il Toolkit toolkit; e poi un costruttore che inizializza toolkit.

Sì.

Ogni minuto devo fare il check di ogni record di una colonna di un tabella, e se un record corrisponde alla data corrente (ggmmaaaa hh:mm) fai beep.