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");
}
}
}
ovvero non appare la scritta "ora interrotto"