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

[SOLUCIONADO] Restingir uso CPU hilo o Thread

Estas en el tema de Restingir uso CPU hilo o Thread en el foro de Java en Foros del Web. Muy buenas a todos! Tengo un programilla en Java con varios hilos. El problema es que cuando uno de ellos se ejecuta usa el 100% ...
  #1 (permalink)  
Antiguo 12/12/2012, 05:15
 
Fecha de Ingreso: octubre-2012
Mensajes: 25
Antigüedad: 12 años, 1 mes
Puntos: 3
Restingir uso CPU hilo o Thread

Muy buenas a todos!

Tengo un programilla en Java con varios hilos. El problema es que cuando uno de ellos se ejecuta usa el 100% de CPU y el ordenador se vuelve loco!

Hay algún modo de restingir el uso de CPU?

Utilizo Eclipse y he probado a cambiar la configuración en "Run Configurations", en "VM arguments" tengo puesto "-Xms128M -Xmx256M" pero nada de nada

Saludos, y gracias!!
  #2 (permalink)  
Antiguo 12/12/2012, 05:40
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Restingir uso CPU hilo o Thread

Los hilos (clase Thread) tienen un método setPriority(). En cualquier caso, un hilo que se "come" la CPU posiblemente se puede mejorar para que no lo haga (date cuenta que un programa normal en java no se come la CPU). Por ejemplo, hacer esperas activas (como esta)

for (int i=0;i<10000;i++);

puede comerse la CPU y se evitan poniendo Thread.sleep() o haciendo llamadas a wait() hasta que se pueda continuar. Habría que ver qué hace exactament ese hilo para gastar tanta CPU y ver si se puede mejorar. También es posible hacer llamadas a Thread.yield() que obliga a un hilo a ceder la CPU temporalmente para que se ejecute otro hilo.

Lo que has puesto -Xms -Xmx es para memoria, que no tiene nada que ver con consumo de CPU.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 12/12/2012, 05:46
 
Fecha de Ingreso: octubre-2012
Mensajes: 25
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Restingir uso CPU hilo o Thread

Cita:
Iniciado por chuidiang Ver Mensaje
Los hilos (clase Thread) tienen un método setPriority(). En cualquier caso, un hilo que se "come" la CPU posiblemente se puede mejorar para que no lo haga (date cuenta que un programa normal en java no se come la CPU). Por ejemplo, hacer esperas activas (como esta)

for (int i=0;i<10000;i++);

puede comerse la CPU y se evitan poniendo Thread.sleep() o haciendo llamadas a wait() hasta que se pueda continuar. Habría que ver qué hace exactament ese hilo para gastar tanta CPU y ver si se puede mejorar. También es posible hacer llamadas a Thread.yield() que obliga a un hilo a ceder la CPU temporalmente para que se ejecute otro hilo.

Lo que has puesto -Xms -Xmx es para memoria, que no tiene nada que ver con consumo de CPU.

Se bueno.


Muchísimas gracias chuidiang por compartir tu sabiduría!!

El hilo lo único que hace es comparar 5 arrays de 300 Strings entre ellos varias veces.

Probaré lo que me comentas!

  #4 (permalink)  
Antiguo 13/12/2012, 04:03
 
Fecha de Ingreso: octubre-2012
Mensajes: 25
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Restingir uso CPU hilo o Thread

Prefecto! Mil gracias chuidiang Qué haríamos los navegantes sin ti!
  #5 (permalink)  
Antiguo 13/12/2012, 05:14
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 9 meses
Puntos: 78
Respuesta: Restingir uso CPU hilo o Thread

Yo le pondría en el bucle un sleep(), tampoco hace falta que sea mucho tiempo, pero lo justo para que deje respirar la CPU

Saludos!

Etiquetas: cpu, hilo, threads
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 05:21.