Ciao andbin
, rieccoti il codice:
codice:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.*;
class Riempi {
public String [] RiempiArray (){
String [] Url = new String[51];
try {
int a=0;
BufferedReader in = new BufferedReader(new FileReader("Prova.txt"));
String str = in.readLine();
while (str != null) {
Url[a]=str;
str = in.readLine();
a++;
}
in.close();
}
catch (IOException e) {
System.out.println(e);
}
finally {
return Url;
}
}
}
class Scaricare implements Runnable{
public void run (){
}
public Scaricare(String s){
StringBuffer sb = new StringBuffer ();
int len;
char[] array = new char[10000];
try{
URL url = new URL(s);
URLConnection connessione = url.openConnection();
connessione.setDoInput(true);
connessione.setUseCaches(false);
InputStreamReader pagina = new InputStreamReader(connessione.getInputStream());
while ((len = pagina.read (array)) > 0){
sb.append (array, 0, len);
}
System.out.println(sb);
sb.setLength(0);
}
catch (IOException e){
System.out.println(e);
}
}
}
public class Main {
public static void main(String[] args){
int i = 0;
String [] Url = new String [51];
Riempi R = new Riempi();
Url = R.RiempiArray();
ExecutorService execService = Executors.newFixedThreadPool(8);
while (i<51){
execService.execute(new Scaricare(Url[i]));
i++;
}
execService.shutdown();
}
}
Secondo te il multithread va bene così o c'è qualche miglioramento da apportare?
Poi volevo chiederti un opinione su una cosa strana (per le mie conoscenze):
ripetendo più volte di seguito il run di questo codice, ovviamente senza nessuna modifica, mi capita che la durata dell'esecuzione cambi di molto, per far apparire a video le pagine html di 51 siti, il tempo la prima volta è di 40/45 secondi, poi di 15/17, poi ancora 40/45, poi 15/17 e continua a ripetersi questa sequenza di tempistiche.
Le prime 2 volte che ho provato pensavo fosse un problema di linea, poi vedendo che i tempi si ripetono uguali per più volte, non sono riuscito a darmi una spiegazione
Per il problema di saltare l'input del post precedente nessun consiglio??
Grazie mille
rostro: