|
|
|
![]() |
|
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: 21:31.