我想爲我的java代碼添加0.488 ms的延遲。但thread.sleep()和Timer函數只允許毫秒的粒度。如何指定低於該水平的延遲金額?向Java代碼添加十進制毫秒延遲
回答
由於1.5你可以使用這個漂亮的方法java.util.concurrent.TimeUnit.sleep(long timeout)
:
TimeUnit.SECONDS.sleep(1);
TimeUnit.MILLISECONDS.sleep(1000);
TimeUnit.MICROSECONDS.sleep(1000000);
TimeUnit.NANOSECONDS.sleep(1000000000);
如果您想等待很短的微秒數,則不能依賴此項。要做到這一點的唯一方法是忙於等待一個線程。 – Dan
您可以使用Thread.sleep(long millis, int nanos)
請注意,你不能保證睡眠如何準確是。根據您的系統,定時器可能只精確到10ms左右。
在Windows JDK1.6.0_37,這種方法只需要添加一個毫秒,並調用Thread.sleep()。它完全無視納米時間。 – kornero
@kornero:這就是爲什麼你不能保證這種方法的精確度:)儘管如此,在某些系統上,你可以獲得亞毫秒級的精度。 –
TimeUnit.anything.sleep()調用Thread.sleep()方法和Thread.sleep()方法四捨五入到毫秒, 都睡( )不可用於小於毫秒精度
的Thread.sleep(長米利斯,INT毫微秒)執行:
public static void sleep(long millis, int nanos) throws java.lang.InterruptedException
{
ms = millis;
if(ms<0) {
// exception "timeout value is negative"
return;
}
ns = nanos;
if(ns>0) {
if(ns>(int) 999999) {
// exception "nanosecond timeout value out of range"
return;
}
}
else {
// exception "nanosecond timeout value out of range"
return;
}
if(ns<500000) {
if(ns!=0) {
if(ms==0) { // if zero ms and non-zero ns thread sleep 1ms
ms++;
}
}
}
else {
ms++;
}
sleep(ms);
return;
}
同樣的情況是用方法wait(long,int);
- 1. 向java代碼添加延遲
- 2. 電話延遲300毫秒
- 3. 如何將毫秒延遲添加到我的TimeSpan?
- 4. Java延遲2秒
- 5. 延遲Javascript效果500毫秒
- 6. Core Audio中的亞毫秒延遲
- 7. CAS更新的Cassandra亞毫秒延遲
- 8. RxJS延遲至少X毫秒
- 9. 計算連接速率(毫秒)(延遲)
- 10. 給現有代碼添加延遲?
- 11. 向毫秒添加毫秒並通過JavaScript獲取新日期
- 12. 延遲給定秒的代碼
- 13. Java ScheduledThreadPoolExecutor延遲15毫秒/不一致的時間?
- 14. 當毫秒數很長時,將毫秒添加到Java日期
- 15. 延遲添加類2秒懸停()
- 16. 如何添加延遲2或3秒
- 17. 爲循環添加1秒的延遲?
- 18. 需要在此代碼上向鼠標移出添加延遲
- 19. Java - 如何將機器人延遲增加到60'000毫秒以上?
- 20. Rails ActionMailer在發送電子郵件之前添加幾毫秒的延遲
- 21. Swift 2 - 向CGFloat添加十進制0
- 22. 添加延遲()
- 23. 十六進制代碼的Java模式
- 24. 延遲2秒
- 25. 延遲jQuery - 在運行時向延遲合同添加回調
- 26. 延遲JavaScript代碼
- 27. SQL DateTime添加毫秒
- 28. 添加毫秒到timeval C++
- 29. 添加延遲CSS添加
- 30. 添加可延遲事件的延遲
檢查以下問題: http://stackoverflow.com/questions/824110/accurate-sleep-for-java-on-windows –