View Full Version : [Java] Schedule
Ho un problema... ho fatto il mio schedule però uso le librerie della sun timer... questo già mi avvisa che nella prossima release verranno tolte e io come faccio a continuare ???
Secondo, con questo sistema ho un problema di modifica dell'intervallo.
Mi chiedo se qualcuno ha una soluzione migliore?
Ho un problema... ho fatto il mio schedule però uso le librerie della sun timer... questo già mi avvisa che nella prossima release verranno tolte e io come faccio a continuare ???
Secondo, con questo sistema ho un problema di modifica dell'intervallo.
Mi chiedo se qualcuno ha una soluzione migliore?Intanto di quale tipo di timer stai parlando .... perché ce n'è più di uno, mi sembra.
Uso queste due librerie:
import sun.misc.Timeable;
import sun.misc.Timer;
ma la classe in questione non mi permette di cambiare l'intervallo quando è stato avviato
Uso queste due librerie:
import sun.misc.Timeable;
import sun.misc.Timer;Non mi sembra che siano standard/documentate.
Guarda: java.util.Timer e javax.swing.Timer (se non le hai già guardate, chiaramente)
ma la classe in questione non mi permette di cambiare l'intervallo quando è stato avviatoIn teoria, basterebbe ricreare un nuovo timer.
Ok sono riuscito a fare qualcosa.....
class Ticker extends java.util.TimerTask {
private static ControlloFile controllo;
private static Configurazione conf;
private static ContenitoreDati CD;
private static TrayIcon traybar;
private static Timer ticker;
public void run() {
GregorianCalendar calendar =
new GregorianCalendar(TimeZone.getTimeZone("GMT+2"));
System.out.println("*** Thread in background:");
System.out.println(" ora: " +
calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(" min: " +
calendar.get(Calendar.MINUTE));
System.out.println(" sec: " +
calendar.get(Calendar.SECOND));
System.out.println("Tempo: " + conf.GetIntervallo());
// ticker.scheduleAtFixedRate(new Ticker(controllo, conf, CD,traybar),0,conf.GetIntervallo()*120000);
}
public static void main(String[] args) {
}
public Ticker(ControlloFile c, Configurazione co,ContenitoreDati CD,TrayIcon tyb){
controllo = c;
conf = co;
this.CD = CD;
traybar = tyb;
System.out.println("tst");
ticker = new java.util.Timer();
ticker.schedule(this,0,co.GetIntervallo()*600);
System.out.println("test");
// Qui c'è il codice dell'applicazione principale
for (int i=0; i<60000; i++) {
System.out.print("...");
}
System.out.println("test");
}
}
Ora nel run devo fixare ogni volta l'intervallo e ho provato con "// ticker.scheduleAtFixedRate(new Ticker(controllo, conf, CD,traybar),0,conf.GetIntervallo()*120000); " ma non va molto bene :/ cioè mi accelera....
C'è un sistema migliore?
Io ho fatto questa prova:
import java.util.*;
public class Prova
{
public static void main (String[] args)
{
Timer timer = new Timer ();
timer.scheduleAtFixedRate (new MyTask (timer), 0, 3000);
}
}
class MyTask extends TimerTask
{
private static int n;
private Timer timer;
public MyTask (Timer timer)
{
this.timer = timer;
}
public void run ()
{
System.out.println ("Task eseguito n." + (n+1));
if (n++ == 3)
{
cancel ();
timer.scheduleAtFixedRate (new MyTask (timer), 1000, 1000);
}
}
}Le prime 4 esecuzioni le fa a intervalli di 3 secondi da lì in poi le fa a intervalli di 1 secondo. Se invece di quel 1000 in rosso metto 0, le esecuzioni n.4 e n.5 le fa vicinissime (era questo forse a cui accennavi tu).
em.. a me non funziona benissimo... ho messo
Timer timer = new Timer ();
timer.scheduleAtFixedRate (new Ticker(Controllo,conf,CD,traybar,timer),0,1000);
Così mi fa partire il timer dopo un secondo...
Poi devo modificare questo timer che me lo esegua quanto ho settato tramite la GUI.
Ho provato a fare scheduleAtFixedate nel run... ma mi resta sempre un secondo e mi esegue sempre quello nel costruttore e non quello nel run :(
Aiuto!!
niente ho risolto, GRAZIE MILLE!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.