我有一個程序,其唯一目的是在無限循環中驅動一個java.awt.Robot
,直到滿足退出條件。Robot.delay(int)與Thread.sleep(long)
機器人快速連續執行多項操作,這些操作之間需要標準的UI延遲。爲此,我使用java.awt.Robot.setAutoDelay(int ms)
,這似乎是專門爲此目的而設計的。
然而,在其他時候,我需要插入任意長的延遲來完成操作。我似乎在使用java.awt.Robot.delay(int ms)
或java.lang.Thread.sleep(long ms)
之間有一個選擇,我很好奇他們之間的差異是什麼,以及我應該使用哪一個。
我的直覺就是讓我所有的操作都保持在同一個「地點」,並使用java.awt.Robot.delay(int ms)
。然而,在想了一會之後,我認爲java.awt.Robot.delay(int ms)
會對機器人的操作堆棧進行操作來完成,如果這些操作是我在無限循環中的唯一延遲,那麼我可能會很快並且毫無必要地產生一個荒謬的結果機器人的大型事件隊列。
在這一點上,我檢查the API for java.awt.Robot.delay(int ms)
,這給我講了:
休眠指定的時間。要捕獲發生的任何
InterruptedException
,可以使用Thread.sleep()
代替。
我沒有得到任何有用的見解,我選擇了問你們。