새로운 요청에 대해 데이터베이스를 폴링하는 서버 프로그램이 있는데이 폴링을 1 분 간격으로 수행하기를 원합니다. Thread.sleep() while 루프.
문제는이 프로그램이 "잠자기"로되어있을 때마다 CPU 소비가 급격히 증가한다는 것입니다 (약 25 ~ 30 %).
역설적으로 프로그램이 휴면 상태가 아니고 요청을 처리하는 중일 때 CPU 사용량은 0.4 %로 떨어집니다.
온라인을 읽고 thread.sleep과 관련된 성능 관련 히트가 있음을 알았지 만 실용적인 대안을 찾을 수 없습니다 (Thread.wait는 객체에 대한 알림이 필요합니다. 내 시나리오에서는 쓸모가 없습니다)스레드가 Thread.sleep을 사용하여 잠자기 상태 일 때의 CPU 사용량
- -> 새로운 기록이
주요 루프 (새로운 요청이없는 경우) 여기에, 아무것도하지 않는 모든 그 골격이 CPU의 소비가 25 %
때 이루어지고있다?
-> Sleep
-> repeat
얼마나 오래 자고 있습니까? 'while' 루프의 나머지 부분은 무엇을하고 있습니까? – EJP
이상 하네. 당신이 묘사하는 것처럼 행동하는 작은 프로그램으로 축소하여 여기에 게시 할 수 있습니까? 최소한, sleep 코드 루프의 뼈대를 보여주십시오 (실제 코드를 사용하십시오). – NPE
실제 잠을자는 곳의 코드 섹션을 제공해주십시오. –