Problemas na conexão com web através do uso URL e openStream

Estou utilizando o seguinte método para conseguir pegar o código fonte de um link e posteriormente salvá-lo em um arquivo.

public static File link(String link) throws MalformedURLException, IOException
{
File arquivo = new File(".", “temp.txt”);
FileWriter fw = new FileWriter(arquivo);
URL u = new URL(link);
Scanner sc = new Scanner(u.openStream());
while (sc.hasNext()) {
fw.write(sc.nextLine());
fw.write("\n");
}
fw.close();

    return arquivo;
}

Estou em dúvida em dois pontos…
primeiro…
de vez enquanto…
quando o programa está executando…acontece um erro…e indica “connection reset”…
o que 'e isso??
como posso contornar este problema??

outro ponto…é em relação a paralelização…

quando executo apenas uma thread…a velocidade é razoavelmente boa…
entretanto…
quando mando executar várias threads…
a velocidade neste ponto: Scanner sc = new Scanner(u.openStream());…é reduzida drasticamente…

queria saber as razões…
e se há alguma forma de obter mais rapidamente o código fonte dos links…