Efectivamente cierro los ficheros en cada threa cuando termino de procesarlos. Pero estamos hablando de manejar unos 2000 ficheros simultaneamente y se ve que da esta excepción.
Yo habia pensado en algun metodo para saber los threads que tengo en funcionamiento en cada momento, o lo que ha dicho anteriormente "chuidiang" de dormir los threads, que también es una buena idea. Pero no tengo conocimiento si es posible hacer esto y como se hace, ya que soy nuevo con el tema threads y java xD.
A ver si alguien me dice ke puedo hacer.
Dejo la llamada para ver si ayuda a entender el problema.
Código PHP:
while((linea = bufferURL.readLine())!=null)//leemos el fichero linea a linea hasta el final
{
contador++;
Thread hijo = new ClaseThread(linea, contador, a, z, gz);
hijo.start();
}