我想結合一個while循環與Thread.sleep,所以代碼將運行在Java中每納秒或微秒。有人能幫我嗎?對不起,我的英文不好,我是荷蘭人。我如何結合Java中的Thread.sleep和while循環?
回答
你不能睡一微秒,只要檢查時間需要很多納秒。
如果您想等待一秒鐘,您需要忙於等待。注意:這將使用高達100%的CPU。
while(running) {
long end = System.nanoTime() + micros * 1000;
while (end > Systen.nanoTime()) { }
// do something.
}
所以代碼將在Java運行每...微秒
你可能要考慮的代碼運行多久
long delayNS = micros * 1000;
long next = System.nanoTime();
while(running) {
next += delayNS;
while (next > Systen.nanoTime()) { }
// do something.
}
因此,如果代碼需要一些時間,你仍然會得到一致的事件間隔。
注:
有Thread.sleep(long millis, int nanos)
但它只是捨去nanos
到最近米利斯。
有LockSupport.parkNanos(n)
其可以是子米利斯但是是最小通常約爲25微秒(即使是1納秒延遲)
有Thread.yield()
可以採取16微秒的,但它也可以採取時間更長。
你在跑步時意味着什麼? micro的值是1是不是正確? –
@DaniëlvanderZwan你可以使用一個標誌來確定你想要循環運行多長時間。如果你想要1微秒的時間間隔,你可以在答案中使用'micros = 1' –
,這會影響CPU週期,因爲代碼實際上一直在做東西,它不是空閒的(這是確保確切的執行程序之間的時間) –
您可以在Thread對象內執行此操作,並在run方法中將您的while與try catch行爲放在一起。
@Override
public void run()
{
while (true) {
try
{
for (int cont = 0; cont < numberOfRequests; cont++)
{
new GetRequestMethod(url, httpClient, defaultRequestConfig, logOption).start();
}
LOG.log(Level.INFO, "\n---------------Send REQUEST " + numberOfRequests + "---------------\n");
}
catch (OutOfMemoryError m)
{
LOG.log(Level.SEVERE, "\n\n\n\n\n\n\n\n\n\nMemory Critical Error: " + m.getMessage() + "\n\n\n\n\n\n\n\n\n\n", m);
sleep(TIME_SLEEP_EXCEPTION);
renewManager();
}
catch (Throwable t)
{
LOG.log(Level.SEVERE, "\n\n\n\n\n\n\n\n\n\nCritical Error!\n", t);
sleep(TIME_SLEEP_EXCEPTION);
renewManager();
}
}
}
睡眠法:
private void sleep(int time)
{
try
{
Thread.sleep(time);
}
catch (InterruptedException e)
{
LOG.log(Level.SEVERE, "\n\n\n\n\n\n\n\n\n\nSleeping Critical Error: " + e.getMessage() + "\n\n\n\n\n\n\n\n\n\n", e);
}
- 1. while while循環中的Thread.sleep()
- 2. 與Java while循環和Thread.sleep()方法
- 3. 結合for循環/ while循環和ODE45
- 4. 如何在Java中結束while循環
- 5. for循環中的Java Thread.sleep()
- 6. 如何結合do while while循環和setInterval定時器函數
- 7. C#while循環thread.sleep在GUI中
- 8. GUI凍結在While循環中的Java
- 9. 我如何限制jQuery和PHP在while循環中的結果
- 10. Java - 如何退出While循環中環
- 11. while while循環? (JAVA)
- 12. JAVA while while循環
- 13. while while循環Java
- 14. 如何退出Java中的while循環?
- 15. 在Java中結束while循環
- 16. java while循環
- 17. Java while循環
- 18. while循環Java
- 19. Java while循環
- 20. Java while while循環不循環
- 21. Java while循環和線程!
- 22. Java while循環和其他
- 23. Combine for和while循環(Java)
- 24. 的Java while循環
- 25. 結合repaint()和Thread.Sleep()
- 26. while循環和While循環的退出
- 27. Java中的Do-While循環
- 28. 在Java中的do-while循環中轉換while循環
- 29. 添加沒有Thread.sleep和while循環的延遲
- 30. Java while while循環問題
你嘗試過什麼嗎?向我們展示您編寫的一些代碼以嘗試此操作。這不是一個免費的編碼服務 – ja08prat
你到底有什麼困難?你確實可以在'while'循環內調用'Thread.sleep()';如果你嘗試了一些不起作用的東西,那就提交代碼。否則,在這裏提出問題之前,儘量自己解決。 –
我試過這個:'while(something){Thread.sleep(0,1000); //我做了一些事情,當然還有try和catch}'但是程序每次使用都會凍結,我必須關閉Window任務管理器。 –