| Creare Timer con Java |
| Programmazione & Co. |
| Venerdì 03 Febbraio 2012 16:14 |
|
E anche quando a Roma nevica a dirotto io vi scrivo un bel articoletto su Java! Oggi vediamo come creare un Timer per riptere un'azione ogni tot intervalli. In molti casi infatti è meglio usare Timer piuttosto che i Thread. Però attenzione che parliamo di java.util.Timer e non di javax.swing.Timer. Questo è lo scenario: in un JFrame ho un metodo che voglio che si ripeta ogni 30 minuti solo se una JCheckBox è selezionata. Se viene deselezionata il timer si deve interrompere. Quindi dopo avere aggiunto una JCheckBox imposto un evento itemStateChanged:
Prima controllo se lo stato è cambiato in SELECTED; se è così istanzio l'oggetto timer. Il valore true serve per dire che loggetto è un deamon; in questo modo il task parte come demone e non come task dell'utente. In questo modo quando il programma che ha lanciato il task viene chiuso, anche il task viene cancellato. Sennò sarete voi a dover gestire la cosa. Dopo aver impostato Timer dobbiamo creare un oggetto TimerTask, che in effetti ciò che crea il task con l'azione ed è quello che viene lanciato da Timer. TimerTask è una classe astratta e si deve reimplementare il metodo run(). Nel metodo gli diciamo cosa deve essere lanciato. Subito sotto impostiamo uno schedule con due parametri; il orimo gli dice dopo quanto deve essere lanciato per la prima volta l'azione, mentre il secondo rappresenta gli intervalli di tempo successivi. Il tutto espresso in millisecondi. Nell'else invece gli diciamo che se la JCheckBox è stata deselezionata il timer deve essere cancellato. Notate che noi abbiamo usato TimerTask inline, ma volendo potevamo creare una classe che estendeva TimerTask e reimplementare la il metodo run(). Dipende dalle necessità ovviamente. |
| Ultimo aggiornamento Venerdì 03 Febbraio 2012 16:45 |


