Tengo un programa de servidor que sondea una base de datos para nuevas solicitudes, quiero que este sondeo se realice en intervalos de 1 minuto, así que configuré Thread.sleep() en el programa while loop.
El problema es que cada vez que se supone que este programa "duerme", el consumo de la CPU aumenta drásticamente (aproximadamente un 25 - 30%).
Paradójicamente, cuando el programa no está inactivo y está ocupado procesando solicitudes, el consumo de CPU cae al 0,4%.
leí en línea, y se informó que hay golpes de rendimiento asociados con Thread.Sleep, pero no pude encontrar ninguna alternativa viable (Thread.wait requiere la notificación sobre un objeto, algo que creo que es inútil en mi escenario)Consumo de CPU cuando el hilo está durmiendo usando Thread.sleep
el bucle principal (cuando no hay nuevas solicitudes) no hace nada, aquí es que se está haciendo un esqueleto de todo lo que cuando el consumo de CPU es de 25%
-> sondeo
-> no hay nuevos registros?
-> Sleep
-> repetir
¿Cuánto tiempo duermes? y ¿qué está haciendo el resto del ciclo 'while'? – EJP
Eso es raro. ¿Puedes reducirlo a un pequeño programa que se comporte como lo describes y publicarlo aquí? Por lo menos, muéstrenos el esqueleto de su ciclo 'sleep' (usando el código real). – NPE
Proporcione la sección de código donde realiza la suspensión real. –