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

    esecuziona metodo lunga, thread?

    Ciao a tutti,
    ho un metodo di una classe che una volta che viene eseguito blocca il programma per circa 30 secondi.
    Io vorrei che nonostante l'esecuzione del metodo, l'utente potesse continuare con l'esecuzione del programma. Ho pensato come possibile soluzione l'utilizzo di un thread, però non so proprio come impostare il tutto.
    Sareste così gentili da aiutarmi?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    è difficile sapere se conviene o no, dipende anche dalle operazione che svolgi in quel metodo..il tempo impiegato è notevole, quindi mi chiedo che accade durante quelle operazioni...

    Dovremmo vedere il codice per darti una mano, così possiamo dirti solo come funziona

    Puoi scegliere se implementare Runnable o estendere Thread. Se ti interessa solo il thread e non usufruire dei metodi di Thread, puoi tranquillamente implementare Runnable; questa fornisce il metodo public void run(), che definisce il punto di accesso (di ingresso) del thread..per potervi accedere è necessario chiamare start() sull'istanza della classe.

  3. #3
    Originariamente inviato da Patrick Jane
    è difficile sapere se conviene o no, dipende anche dalle operazione che svolgi in quel metodo..il tempo impiegato è notevole, quindi mi chiedo che accade durante quelle operazioni...

    Dovremmo vedere il codice per darti una mano, così possiamo dirti solo come funziona

    Puoi scegliere se implementare Runnable o estendere Thread. Se ti interessa solo il thread e non usufruire dei metodi di Thread, puoi tranquillamente implementare Runnable; questa fornisce il metodo public void run(), che definisce il punto di accesso (di ingresso) del thread..per potervi accedere è necessario chiamare start() sull'istanza della classe.
    Beh in realtà implementare Runnable non è sufficiente per eseguire del codice in un thread distinto, in qualche modo la classe Thread va coinvolta, o estendendola oppure istanziandola e passandogli un runnable (che da solo però non implica l'esecuzione in un thread separato). Faccio questa precisazione perché proprio di recente ho avuto modo di discuterne con una persona che affermava il contrario, e cioè che per eseguire del codice in un thread separato fosse sufficiente implementare runnable e chiamare run.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    poi bisogna anche vedere se queste operazioni devono essere svolte necessariamente per proseguire correttamente o se in qualche modo puoi ottimizzarle (riducendo qualche secondo di esecuzione).

    Poi le valutazioni di 30 secondi come le hai fatte?

  5. #5
    grazie mille per le risposte.
    Adesso vi spiego meglio il problema.
    Ho creato una piccola applicazione, per fini puramente didattici, in cui ho un repository semantico e una semplice GUI.
    Ho la necessità di fare il shutdown del repository dopo che ho svolto delle operazioni, solamente che questa operazione richiede molto tempo e quindi tutta l'applicazione si blocca in attesa dell'esecuzione.

    Ho "risolto" implementando la classe che contiene il metodo incriminato chiamato closeRep() con Runnable e ho implementando il metodo run semplicemente facendo una chiamata la metodo closeRep() , poi nella classe dove vado a richiamare questo metodo ho creato un thread e poi quando ho bisogno di richiamare quel metodo faccio thread.start().
    Ora sembra che la cosa funzioni, però ho un'altra domanda da farvi.

    Vorrei monitorare il tempo di esecuzione di questo thread attraverso una jprogressbar.
    E' possibile settare l'avanzamento della progress bar in base al tempo di esecuzione del thread

    Scusate, ma è la prima volta che lavoro con i thread , ho letto le varie documentazioni ma la cosa mi rimane un pò ostica. Grazie mille ancora!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    tutorial Oracle, java 6 e SwingWorker

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.