下面的代碼:了Thread.sleep等待超過預期
long msBefore = System.currentTimeMillis();
//Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
try
{Thread.sleep(200);
} catch (InterruptedException e){}
System.out.println("Time: " + (System.currentTimeMillis() - msBefore));
打印:
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
哪裏的問題?
儘管您的系統要求精確,但它應該比這更接近。在我的Windows和Linux系統上,它很少超過預期的2毫秒。你有什麼操作系統? – 2011-05-23 12:02:01
嗨,穆罕默德。正如其他人指出的那樣,這將取決於您的系統的準確性(即使是環境因素,例如溫度可能會發生變化)。出於好奇,你試圖通過這個代碼來解決的實際問題是什麼?根據你的答案,這裏的某個人可能會以更好的方式幫助你做到這一點(例如,TimerTaskExecutor對於打印定期檢測信號會更準確)。請確保您以不同的線索提出問題。乾杯。 – 2011-05-23 12:21:09
我以後運行過幾次,現在它的準確度很高。謝謝大家的幫助。 – 2011-05-24 08:15:29