Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
E come lo posso usare nel mio caso, cioè io scarico delle ore di appuntamento dal db, ad esempio 18,19,20:30!! alle 18 devo ricevere un avviso , un altro alle 19, e un altro alle 20:30. Inoltre posso aggiungere anche nuovi appuntamenti in giornata: ad esempio alle ore 17 , aggiungo un appuntamento alle 18:30!! Timer fa al mio caso?
Guarda la documentazione Javadoc e in particolare il suo schedule(TimerTask task, Date time) .
Per altri dubbi, chiedi pure. La cosa importante da sapere subito è che i task vengono eseguiti nel contesto di quel suo thread di Timer, che quindi non va tenuto impegnato per troppo tempo.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Concettualmente è esattamente la stessa cosa che avviene con il EDT in Swing. In generale nei casi dove c'è un "framework" che ha un suo thread che fa molte cose e di tanto in tanto permette di "chiamare" del tuo codice (in Swing tramite Runnable o i metodi dei listener, mentre in java.util.Timer è TimerTask che è-un Runnable).
Se tieni "impegnato" il suo thread .... lui non può fare altro in quel frangente (in Swing non disegna componenti o dispaccia eventi, in java.util.Timer non schedula/invoca altri task).
Se hai capito il threading in Swing .... hai capito il threading in java.util.Timer.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
il threading in swing l'ho capito , quindi per quello che devo fare io la classe timer non va bene? cioè ho bisogno qualcosa che mi ricordi l'appuntamento a una determinata ora: supponendo che oggi ho 3 app.ti uno alle 17 , uno alle 18 , uno alle 19. Adesso mi scarico gli appuntamenti del giorno. QUindi il mio timer dovra informarmi alle 17,18,19. Il problema è che se aggiungo un appuntamento alle 16.30, dovrà attendere perchè ormai è gia impegnato con quello delle 17?
Ultima modifica di linux_r; 11-04-2014 a 11:06
Può andare bene. Ma ripeto la cosa: quando Timer invoca il run() di un TimerTask lo fa nel suo thread, che non devi tenere impegnato per "troppo" tempo. Se devi fare cose "lunghe" dovresti creare un tuo nuovo thread.
Esattamente come quando Swing dispaccia un evento, es. in actionPerformed e se devi fare cose "lunghe", dovresti creare un nuovo thread.
Ti è chiaro o no?
In Timer puoi schedulare task in qualunque ordine, lui è abbastanza smart da ordinarli e schedularli in maniera efficiente.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Ok tutto chiaro. Adesso però ho trovato un metodo schedule della classe timer che prende in input il timertask , e Date oraDestinazione.
Il problema è che l'ora la ho in java.sql.Time. Come converto?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
scusa in java.sql.time c'è solo l'ora mentre java.util.date include anche la data. Quindi al metodo di cui sopra posso passare direttamente l'oggetto java.sql.time?