Các mã sau đây:Thread.sleep chờ đợi hơn dự kiến
long msBefore = System.currentTimeMillis();
//Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
try
{Thread.sleep(200);
} catch (InterruptedException e){}
System.out.println("Time: " + (System.currentTimeMillis() - msBefore));
in:
Time: 578
Time: 594
Time: 625
Time: 640
Time: 641
Time: 609
Time: 625
Time: 625
Time: 610
Time: 609
Time: 625
Time: 625
Time: 422
Time: 625
Time: 594
Time: 609
Time: 625
Time: 594
Time: 594
Time: 625
đâu vấn đề ??
Mặc dù bạn phải tuân theo tính chính xác của hệ thống, nó phải gần gũi hơn với điều này. Trên hệ thống Windows và Linux của tôi, nó hiếm khi dài hơn 2 ms so với dự kiến. Bạn có hệ điều hành nào? –
Xin chào Mohammed. Như những người khác đã chỉ ra, điều này sẽ phụ thuộc vào độ chính xác của hệ thống của bạn (ngay cả các yếu tố môi trường như nhiệt độ có thể đá vào). Chỉ vì tò mò, vấn đề thực tế bạn đang cố giải quyết bằng mã này là gì? Tùy thuộc vào câu trả lời của bạn, ai đó ở đây có thể giúp bạn một cách tốt hơn để làm điều đó (ví dụ: TimerTaskExecutor sẽ chính xác hơn nhiều khi in nhịp tim thông thường). Hãy đảm bảo bạn nêu câu hỏi theo một chủ đề khác. Chúc mừng. –
Tôi đã chạy nó vài lần sau đó, và nó là một mở rộng tuyệt vời chính xác ngay bây giờ. Cảm ơn tất cả đã giúp đỡ. –