Foros del Web » Programación para mayores de 30 ;) » Java »

Limitacion Threads

Estas en el tema de Limitacion Threads en el foro de Java en Foros del Web. Buenas, tengo un programa que mediante threads va descargando links de una lista inicial y me surge el problema que me saltan excepciones porque tengo ...
  #1 (permalink)  
Antiguo 26/08/2008, 01:50
 
Fecha de Ingreso: agosto-2008
Mensajes: 11
Antigüedad: 15 años, 8 meses
Puntos: 0
Limitacion Threads

Buenas, tengo un programa que mediante threads va descargando links de una lista inicial y me surge el problema que me saltan excepciones porque tengo demasiados ficheros abiertos. "ERROR durante la ejecucion del programa: java.io.FileNotFoundException: index807.html (Too many open files)"

Hay alguna manera de limitar la apertura de threads a un numero X para solucionar este problema?
  #2 (permalink)  
Antiguo 26/08/2008, 01:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Limitacion Threads

Hola:

El problema no son los hilos (supongo). Deberías hacer un close() de cada fichero abierto cuando ya no lo necesitas.

Si ya lo estás haciendo, en principio no puedes limitar automáticamente los Threads (que yo sepa). Tendrías que llevar tú una especie de contador y revisarlo antes de abrir un nuevo Thread. Otra opción es que el Thread, al obtener ese error, se duerma un tiempo y luego vuelva a intentarlo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 26/08/2008, 02:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 11
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Limitacion Threads

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(lineacontadorazgz);
                           
hijo.start();     
                } 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:37.