我有一个程序,其唯一目的是在无限循环中驱动一个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()
代替。
我没有得到任何有用的见解,我选择了问你们。