항상 새로운 연결을 수신 대기하는 작은 서버를 만들고 있습니다. 초당 약 30 회 서버가 "깨어나서"클라이언트에 업데이트 요청을 보냅니다. 클라이언트는 깨어나서 (마지막 연결에서 설정된대로) 잠자기 상태가되어 요청을 수락하고 업데이트를 시작합니다. 교환 용 윈도우가 지속적으로 작기 때문에 수면주기의보다 정확하고 정확한 측정을 위해 수면 스레드의 대기 시간을 어떻게 관리합니까?자바 스레드의 대기 시간을 제어 할 수 있습니까?
답변
아니요.
당신이 여기에있는 것은 2 과 완전히 다른 활동이 결합 된 것입니다. 하나는 정기적 인 각성을 담당하고 다른 하나는 클라이언트 업데이트를 담당합니다. 웨이크 업 태스크 이 업데이트 작업을 수행하기 위해을 기다리는 경우 정확성에 문제가 발생합니다.
당신이 할 수있는 일은 서버에 어느 정도의 비동기 성을 도입하여 문제를 해결하는 것입니다.
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
final Runnable notificationTask = new Runnable() {
@Override public void run() {
updater.sendUpdate(); // just *notify* the updater to do an update
}
};
executor.scheduleAtFixedRate(
notificationTask, 0, 33333333, TimeUnit.NANOSECONDS // freakishly accurate :)
);
나는 본다. 이것은 당신을 감사 할 것입니다. 나는 Executors anywho를 사용하고 있었고, 분명히 scheduledPool : P를 알아 차리지 못했습니다. – AedonEtLIRA
왜 계속 깨어날 수 없습니까? Observer/Observable 패턴이 어떤 방식 으로든 도움이됩니까?
그것은 아주 잘 깨어있을 수 있지만 배터리 최적화를 위해 설계하고 있습니다. 그 Observer를 현재 보겠습니다. – AedonEtLIRA
자고 잠시 깨어서 30 번씩 깨우면 절약하는 것이 아니라 자원을 낭비하지 않는 것입니다. – adarshr
- 1. (어떻게) 소켓 대기 시간을 줄일 수 있습니까?
- 2. Selenium IDE에서 페이지 액세스 대기 시간을 테스트 할 수 있습니까?
- 3. UIScrollView에서 끌기 대기 시간을 비활성화 할 수 있습니까?
- 4. C에서 스레드의 대기 실행
- 5. DIFFERENT 스레드의 TLS에 액세스 할 수 있습니까?
- 6. 트랜잭션 복제에서 1 초 미만의 대기 시간을 얻을 수 있습니까?
- 7. 자바 스크립트는 클라이언트에서 이미지 다운로드 시간을 캡처 할 수 있습니까?
- 8. 소비자 스레드의 주 스레드에서 데이터 대기 대기 구성 방법
- 9. 외부 자바 스크립트 문구에서 페이지 대기 시간을 최소화하는 방법은 무엇입니까?
- 10. 스레드의 자바 예외
- 11. Windows 대기 타이머를 검색 할 수 있습니까?
- 12. Javascript로 GIF 애니메이션을 제어 할 수 있습니까?
- 13. 수면 스레드의 남은 시간을 C#에서 깨우기
- 14. CountDownTimer의 시간을 업데이트 할 수 있습니까?
- 15. cocos2d Director가 시간을 반환 할 수 있습니까?
- 16. JodaTime으로 상대 시간을 파싱 할 수 있습니까?
- 17. 스레드의 자바 URL 연결
- 18. Windows Mobile에서 다른 스레드의 양식 요소 제어
- 19. 안드로이드에서 Thread.sleep() 대기 시간을 줄이는 방법
- 20. "GET"요청에서 MS/대기 시간을 검색 할 수 있습니까? (Javascript/Jquery)
- 21. 서버와 클라이언트 간의 대기 시간을 확인하는 방법
- 22. 웹 브라우저의로드 아이콘을 제어 할 수 있습니까?
- 23. 어떻게 전화를 제어 할 수 있습니까?
- 24. 어떻게 자동으로 터미널을 제어 할 수 있습니까?
- 25. zend_form 레이아웃을 완벽하게 제어 할 수 있습니까?
- 26. 트랙바에서 양식의 불투명도를 제어 할 수 있습니까?
- 27. UIImageView 애니메이션을 어떻게 제어 할 수 있습니까?
- 28. Mathematica에서 숫자 스타일을 제어 할 수 있습니까?
- 29. 어떻게하면 winmo 전화를 제어 할 수 있습니까?
- 30. QWizard 버튼을 어디에서 제어 할 수 있습니까?
이 클라이언트는 정확한 순간에 데이터를 읽을 필요가 있습니까? 데이터는 네트워크 인터페이스에서 수신합니까? 네트워크 대기 시간을 추측한다는 의미입니다. Btw, 클라이언트가 서버가 보내는 소켓이 열려 있으면 클라이언트 스레드 (소켓을 읽는 스레드)가 잠든 경우에도 서버에서 데이터를 보낼 수 있습니다. 진짜 거래는 무엇입니까? – cafebabe