Ciao a tutti! Ho creato una classe, nella quale eseguo un ping per sapere se il pc è in rete oppure no. Quello che vorrei fare è creare un pool di thread per far partire in contemporanea n ping e permettere di mappare la mia rete aziendale in maniera rapida. La classe che implementa runnable e che esegue il ping è in breve così composta :
public class info(){
String ip;
public info(ip){
this.ip=ip;
}
...
...
public run(){
process p = Runtime.getRuntime.exec("ping "+ip);
}
}
In un altra classe creo 255 oggetti della classe info, chiaramente correttamente inizializzati coi i 255 indirizzi che voglio mappare ( 10.10.10.[0]-[255]) e ho un metodo che è qui descritto :
public void eseguiThread(){
...
...
pool=Executors.newFixedThreadPool(NumeroMAXThread) ;
for(int i=0;i<255;i++){
pool.execute(info[i]);
}
pool.shutdown();
}
Ora quando lancio questo metodo nel main, a volte mi fa correttamente i 255 ping, altre volte, a sua discrezione, 254 o 253. Sembra quasi che il pool non aspetti la terminazione di tutti i ping e che termini prima. Come posso fare per risolvere?

Rispondi quotando