|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
[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? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
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 |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Guarda: java.util.Timer e javax.swing.Timer (se non le hai già guardate, chiaramente) In teoria, basterebbe ricreare un nuovo timer.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
Ok sono riuscito a fare qualcosa.....
Codice:
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");
}
}
C'è un sistema migliore? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
up up up
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Io ho fatto questa prova:
Codice:
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);
}
}
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
em.. a me non funziona benissimo... ho messo
Codice:
Timer timer = new Timer ();
timer.scheduleAtFixedRate (new Ticker(Controllo,conf,CD,traybar,timer),0,1000);
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!! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
niente ho risolto, GRAZIE MILLE!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:53.




















