Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    come riesumare un thread

    Ciao a tutti,
    avrei bisogno di poter mandare in stop e in play a mio piacimento un thread. Visto che il metodo stop() è deprecato, sto utilizzando il metodo interrupt, è solo che se faccio

    codice:
    Thread t = new Thread();
    t.start();
    t.interrupt();
    t.start();
    non gli piace, mi da errore.

    La mia domanda è come faccio a riesumare un thread interrotto?

  2. #2

    Re: come riesumare un thread

    Originariamente inviato da VioletFairy
    Ciao a tutti,
    avrei bisogno di poter mandare in stop e in play a mio piacimento un thread. Visto che il metodo stop() è deprecato, sto utilizzando il metodo interrupt, è solo che se faccio

    codice:
    Thread t = new Thread();
    t.start();
    t.interrupt();
    t.start();
    non gli piace, mi da errore.

    La mia domanda è come faccio a riesumare un thread interrotto?
    Potresti controllare l'operato del tuo thread, una volta avviato, mediante l'uso di un singolo/più flag, in modo da poterlo mettere in pausa, farlo stoppare e riprendere.

  3. #3

    Re: Re: come riesumare un thread

    Originariamente inviato da VincenzoTheBest
    Potresti controllare l'operato del tuo thread, una volta avviato, mediante l'uso di un singolo/più flag, in modo da poterlo mettere in pausa, farlo stoppare e riprendere.
    Cioè? Come dovrei fare? Io non riesco a far ripartire un Thread interrotto. Mi da l'eccezione java.lang.IllegalThreadStateException, come se eseguissi due volte di seguito lo start();

  4. #4

    Re: Re: Re: come riesumare un thread

    Originariamente inviato da VioletFairy
    Cioè? Come dovrei fare?
    Creare una tua classe che estenda Thread e ridefinisca run().

  5. #5

    Re: Re: Re: Re: come riesumare un thread

    Originariamente inviato da VincenzoTheBest
    Creare una tua classe che estenda Thread e ridefinisca run().
    E' proprio la mia situazione. Ho una classe che estende Thread, implemento il metodo run, creo un'istanza di questa classe, faccio partire il thread, ma poi se lo interrompo e lo faccio ripartire non me lo fa fare... Perchè?

  6. #6

    Re: Re: Re: Re: Re: come riesumare un thread

    Originariamente inviato da VioletFairy
    E' proprio la mia situazione. Ho una classe che estende Thread, implemento il metodo run, creo un'istanza di questa classe, faccio partire il thread, ma poi se lo interrompo e lo faccio ripartire non me lo fa fare... Perchè?
    Come ti hanno suggerito ti conviene scrivere un loop dentro il medodo run del tuo thread e a ogni iterazione controllare una variabile discriminante che ti dia la condizione per fare una di queste cose 1) effettuare l'operazione per cui il tuo thread è stato creato, 2)effettuare un'iterazione a vuoto (lasciando di fatto in pausa il tuo thread, che è vivo ma nn fa nulla) 3) interrompere il ciclo, portare a termine il metodo run e quindi concludere anche il thread con esso.
    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.)

  7. #7
    Scusami, quindi in pratica io non posso più gestire la classe thread come si faceva con i vecchi metodi stop start? Non posso stopparla e riavviarla come e quando voglio io, ma mi tocca mantenere sempre in vita questo thread e scirvermi il codice che fa questa cosa????

  8. #8
    Originariamente inviato da VioletFairy
    Scusami, quindi in pratica io non posso più gestire la classe thread come si faceva con i vecchi metodi stop start? Non posso stopparla e riavviarla come e quando voglio io, ma mi tocca mantenere sempre in vita questo thread e scirvermi il codice che fa questa cosa????
    Start lo puoi e lo devi usare, per lo stop sostanzialmente è come hai detto...leggi anche qui in proposito
    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.)

  9. #9
    Ovviamente la logica dipende dal comportamento che devi implementare, ma l'idea di base è quella di estendere la classe Thread o implementare l'interfaccia Runnable e nell' implementazione del metodo run() inserire un ciclo while gestito da uno o più flag booleani gestiti tramite l'istanza della classe invocandi i rispettivi metodi set per ablilitare o disabilitare i flag simulando in tal modo la messa in pausa del thread.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Originariamente inviato da satifal
    Ovviamente la logica dipende dal comportamento che devi implementare, ma l'idea di base è quella di estendere la classe Thread o implementare l'interfaccia Runnable e nell' implementazione del metodo run() inserire un ciclo while gestito da uno o più flag booleani gestiti tramite l'istanza della classe invocandi i rispettivi metodi set per ablilitare o disabilitare i flag simulando in tal modo la messa in pausa del thread.
    I famosi 3 punti
    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.)

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.