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
.... come posso fare ad implementare la tua ? (cioè quando i 255 processi che eseguono il ping terminano lo notificano al main?). hai qualche idea in particolare? ho provato con una variabile statica aggiornata da ogni thread che parte attraverso un metodo synchronized per tenerne il conto, ma non funziona. In ogni caso grazie mille per la risposta.
