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

    Interruzione thread in JAVA

    Salve a tutti,
    è da poco tempo che ho iniziato ad utilizzare Java, ed ora vorrei sapere come si fa ad interrompere un thread durante la sua esecuzione, o per meglio dire: mi trovo nella situazione in cui devo verificare che un'istruzione (un invio di un messaggio ad una coda) all'interno del metodo run di un thread, venga eseguita entro un tempo prestabilito.
    Altrimenti il thread si deve interrompere, sollevando un'eccezione.
    Come posso fare? Ho pensato alla creazione di un thread parallelo, con la quale compararne la durata. Vi prego aiutatemi!!
    Grazie..!
    Anna79

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    Un modo potrebbe essere questo:

    nella classe Runnable dove hai il metodo run fai:

    boolean esegui = true;

    public void run(){
    while(esegui){

    // qui metti il codice da eseguire....
    Thread.sleep(10);
    }
    }

    public void fermaThread(){
    esegui = false;
    }

    quando chiami il metodo fermaThread viene interrotta l'esecuzione del thread.

    Crei poi un timer che viene avviato assieme al thread e dopo X secondi controlla se il messaggio è stato inviato, se non è stato inviato fermi il thread e lanci un eccezione !!

    occhio che sono andato a memoria senza provare...

  3. #3
    E' proprio quello che non so fare..Creare un timer che viene avviato assieme al thread e dopo X secondi controlla se il messaggio è stato inviato, per poi controllare se non è stato inviato, fermare il thread e lanciare un eccezione .. sapete dirmi come si fa?

    grazie mille.....
    Anna79

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    allora per il timer fai così:

    crei una classe che estende TimerTask:

    import java.util.*;
    public class ilTuoTask extends TimerTask {
    public void run() {
    //qui metti il codice da far eseguire quando scatta il timer
    }
    }

    poi all'interno del main o dove vuoi fai:


    Timer timer = new Timer();
    ilTuoTask task = new ilTuoTask();
    timer.schedule( task, 10000 );

    in questo caso l'esecuzione avviene dopo 10 secondi.

  5. #5
    Sì adesso mi è un pò più chiaro.. ma continuo ad avere problemi.. ho inserito nel metodo run l'invio del messaggio: è lì che lo devo inviare? In modo che dopo il tempo stabilito si blocchi in automatico?
    Grazie x la disponibilità...!
    Anna79

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.