Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Far attivare un Thread in una data prestabilita

    Buonasera a tutti,
    sto realizzando un semplice servizio web per un progetto universitario, tra le altre cose, avrei da realizzare anche un servizio, diciamo lato amministratore del sistema (ovvero per semplificazione girera direttamente sulla macchina server ed utilizzera una interfaccia grafica basilare basata sulle awt), il quale girera autonomamente su un proprio thread dedicato ed in maniera del tutto trasparente all'utilizzatore del sistema.

    Venendo al dunque, avrei necessità di far attivare questo thread in delle date prestabilite e ad intervalli di tempo costanti, es una volta a settimana o una volta al mese, ogni tot. giorni e cosi via, ora, il problema che mi sorge spontaneo è, come fare? O meglio, come farlo in maniera abbastanza efficiente per il sistema?
    Sfruttare il metodo sleep(millisec) non mi pare ne troppo efficiente, ne troppo realizzabile viste le cifre che verrebbero fuori su intervalli ad esempio di mesi.
    Non esiste mica qualche classe java sfruttabile a tal proposito?

    Insomma, avete qualche idea efficiente, consiglio o meglio ancora vi è gia capitato di risolvere un problema del genere?
    Grazie mille a tutti per l'attenzione.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da =IngegnerCane= Visualizza il messaggio
    Venendo al dunque, avrei necessità di far attivare questo thread in delle date prestabilite e ad intervalli di tempo costanti, es una volta a settimana o una volta al mese, ogni tot. giorni e cosi via, ora, il problema che mi sorge spontaneo è, come fare?
    Esistono librerie apposite: http://quartz-scheduler.org
    Oppure, per scenari basilari/minimali, il buon classico java.util.Timer.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quartz è proprio quello che fa per te
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Grazie mille a tutti, Quartz è la prima volta che lo sento, ora me lo studio un attimo.

    Riguardo ad implementare classi Timer/TimerTask ci stavo dando un'occhiata ma alla fine rimarrebbe sempre il fatto che bisognerebbe specificare millisecondi relativamente ad intervalli temporali di mesi ....il che potrebbe portare ad overflow o sbaglio?

  5. #5
    Ok come non detto, ho fatto due calcoletti al volo e per andare in overflow bisognerebbe specificare una data futura di piu o meno 290 mila anni!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da =IngegnerCane= Visualizza il messaggio
    bisognerebbe specificare millisecondi relativamente ad intervalli temporali di mesi ....il che potrebbe portare ad overflow o sbaglio?
    Di per sé no, almeno al momento e per ancora tanto tanto tempo. Il long dei millisecondi è dalla "epoch", ovvero il 1 gen 1970 0:00:00 (GMT). Siccome al momento siamo a circa 1434010992759 cioè usa 41 bit dei 64 disponibili del long ..... vuol dire che c'è spazio ancora per migliaia e migliaia di anni!

    Comunque l'ho già detto prima: java.util.Timer va bene per scenari davvero basilari e semplici. Presumo non sia il tuo caso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Sisi un range di 290k anni mi basterebbe pure :mrgreen:, ma appunto come dicevo in descrizione, visto che sarà un servizio abbastanza oneroso che gira in background non vorrei risultasse troppo pesante, anche se si attiva solo una volta al mese insomma.

    Come detto è la prima volta che uso temporizzatori ad intervalli di tempo cosi alti quindi appena riesco mi metto un attimo a capire bene come funziona Quartz che mi pare interessante ed anche piuttosto semplice da usare e poi valutero per bene.

    Il servizio considera in sostanza dovrà scansionare un DB ed in base a determinate condizioni dovrà inviare delle email agli utenti che corrispondono alle condizioni di ricerca.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Senza entrare nel merito di Quartz e via dicendo... ma siamo sicuri che a te non possa semplicemente bastare ciò che tutti i sistemi operativi già hanno già di serie? Dal cron su macchine Linux alle "Operazioni pianificate" di Windows?
    Da quello che mi pare di capire, quello che tu chiami "thread" altro non è che una banalissima applicazione da avviare a determinati intervalli... poi se non è così e non ho capito nulla, amen; ma se il tutto si riduce ad avviare un'applicazione ogni [intervallo che ti interessa], secondo me non vale nemmeno la pena di andare a scomodare alcunché.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.