Ho un programma server che esegue il polling di un database per le nuove richieste, voglio che questo polling venga eseguito ad intervalli di 1 minuto, quindi ho impostato un Thread.sleep() nel programma mentre il ciclo.
Il problema è che ogni volta che si suppone che questo programma "dorma", il consumo della CPU aumenta drasticamente (circa il 25-30%).
Paradossalmente, quando il programma non è dormiente ed è occupato nelle richieste di elaborazione, il consumo della CPU scende allo 0,4%.
ho letto on-line e ha scoperto che ci sono colpi di performance associati Thread.sleep, ma non ho trovato alcuna alternativa valida (Thread.wait richiede la notifica su un oggetto, una cosa che mi sembra inutile nel mio scenario)CPU consumata quando thread sta dormendo utilizzando Thread.sleep
il ciclo principale (quando non ci sono nuove richieste) non fa nulla, qui c'è uno scheletro di tutto ciò che è stato fatto quando il consumo di CPU è il 25%
-> sondaggio
-> Nessun nuovo record?
-> Sonno
-> ripetere
Per quanto tempo dormi? e qual è il resto del ciclo while? – EJP
Questo è strano. Puoi ridurlo a un piccolo programma che si comporta come ti descrivi e pubblicarlo qui? Per lo meno, per favore mostraci lo scheletro del tuo ciclo di sonno (usando il codice attuale). – NPE
Si prega di fornire la sezione del codice dove si fa il sonno effettivo. –