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

    [JAVA] problema nel bloccare i thread

    Salve a tutti, ho create un JFrame che permette l'esecuzione di 5 thread.

    Il problema è che per chiudere i thread utilizzo un pulsante che richiama thread.interrupt(). ovviamente in alcuni casi non tutti i thread si chiudono (infatti interrupt chiude solo i thread che sono momentaneamente bloccati) quindi in questi casi devo premere il pulsante 2 volte.
    Come posso risolvere il problema?
    -Montanelli-: Ma lei evadeva quasi sempre, no?

    -Mesina-: Sì, ho la fortuna di avere i polsi più grossi delle mani...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Evitando di chiamare la interrupt e utilizzando quanto suggerito anche dalla Sun: all'interno del metodo run() del thread utilizzi una variabile booleana (o altro) che controlla l'uscita dal ciclo. Per interrompere il thread prepari un metodo ad hoc che vada a settare opportunamente la variabile booleana in modo da far terminare il ciclo. Il thread, infatti, si ferma quando termina il metodo run(). Esempio:
    codice:
    public class MioThread extends Thread {
       ...
       private boolean termina;
       public MioThread() {
          ...
          termina = false;
       }
    
       public void run() {
          while (!termina) {
             ...
          }
       }
       ...
       public void ferma() { termina = true; }
    }
    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.