| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  25-04-2008, 18:33 | #1 | 
| Member Iscritto dal: Apr 2007 
					Messaggi: 153
				 | 
				
				[JAVA]nterrompere thread in pool
			 
		Apro questo 3d con una domanda ma mi sa che dovrò farne altre anche sebbene inerenti. Intanto chiedo questo: come si fa ad interrompere un thread che fa parte di un pool? io ho provato così ma non me lo interrompe: Codice: import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 *
 * @author Daniele
 */
public class Main {
        ExecutorService executor;
        ExecutorService executor2;
        TaskClass tread1;
        TaskClass tread2;
        Thread task1;
        Thread task2;
    
   public Main(){
        this.executor =Executors.newFixedThreadPool(2);
        this.executor2=Executors.newFixedThreadPool(1);
        this.tread1 = new TaskClass();
        this.tread2 = new TaskClass();
        this.task1 = new Thread(tread1);
        this.task2 = new Thread(tread2);
        executor.execute(task1);
        executor2.execute(task2);
        
   }
    
    /**
     * @param args the command line arguments
     */
    @SuppressWarnings("static-access")
    public static void main(String[] args) throws InterruptedException {
        
        Main princ = new Main();
        Thread t = new Thread();
        t.sleep(4000);
        princ.task1.interrupt();
        if(princ.task1.isInterrupted())
        {
            System.out.println("ora interrotto");
        }
        System.out.println("fine");
    }
    public class TaskClass implements Runnable{
        public void run() {
            while(!Thread.interrupted()){
                
            }
            System.out.println("interrotto");
        }
        
    }
}  Ultima modifica di braian : 25-04-2008 alle 18:41. | 
|   |   | 
|  25-04-2008, 19:00 | #2 | 
| Senior Member Iscritto dal: Mar 2007 
					Messaggi: 7863
				 | 
		leggi bene la documentazione del metodo interrupt() la cui funzione non è esattamente quella di bloccare l' esecuzione di un thread.
		 | 
|   |   | 
|  27-04-2008, 09:42 | #3 | 
| Member Iscritto dal: Apr 2007 
					Messaggi: 153
				 | 
		Vi sarei davvero grato se poteste darmi qualche aiuto in più, non riesco a capire bene dalla documentazione. Qual' è il problema del codice? COme mai non viene inviata/rilevata l' interruzione? Grazie | 
|   |   | 
|  27-04-2008, 10:21 | #4 | 
| Member Iscritto dal: Apr 2007 
					Messaggi: 153
				 | 
		Forse sono arrivato a una conclusione... interrupt() cambia solo un falg nel thread il quale flag può essere testato tramite isInterrupted() o interrupted(). La differenza che noto tra questi 2 metodi è che interrupted() rimette il flag al valore di default mentre isInterrupted non cambia il valore del flag. Vi sarei grato di smentirmi qualora dicessi fesserie. Grazie | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 09:50.









 
		 
		 
		 
		






 
  
 



 
                        
                        










