Ah ok capito!
1) Quindi diciamo che ha senso usare una thread pool quando ho molti thread da eseguire e per evitare il problema di eseguirli tutti insieme ne lancio a gruppetti. Giusto??
Io uso la thread pool perchè devo analizzare dei file in parallelo. I file da analizzare sono elencati in uno stack. Ogni thread fa una pop dello stack (metodo sincronizzato ad hoc che restituisce un elemento finchè ce ne sono, altrimenti ritorna una stringe "end") e poi analizza il file. Sostanzialmente il run è fatto in questa maniera:
codice:
public void run(){
String[] record = jarAnalyzer.syncPop();
while(record[0] != "end"){
//bla bla bla fai quello che devi fare
record = jarAnalyzer.syncPop();
}
}
Il thread ovviamente muore quando la syncPop() ritorna "end".
E' più corretto lanciare la thread pool così:
codice:
while(!this.stack.isEmpty()){
pool.execute(new JarAnalyzerThread(this));
}
oppure così:
codice:
for(int i = 0; i < NUMERO_MAX_THREAD; i++){
pool.execute(new JarAnalyzerThread(this));
}
Grazie mille!
mainetz!