我有一个程序,其唯一目的是java.awt.Robot
在无限循环中驱动 a 直到满足退出条件。
机器人快速连续执行许多动作,这需要它们之间的标准 UI 延迟。为此,我使用java.awt.Robot.setAutoDelay(int ms)
,它似乎正是为此目的而设计的。
然而,在其他时候,我需要插入任意长的延迟才能完成操作。我似乎可以在使用java.awt.Robot.delay(int ms)
or之间进行选择java.lang.Thread.sleep(long ms)
,并且很好奇它们之间的区别是什么,以及我应该使用哪个。
我的直觉是把我所有的操作都放在同一个“地方”,并使用java.awt.Robot.delay(int ms)
. 然而,想了一会儿之后,我认为这java.awt.Robot.delay(int ms)
会在机器人的操作堆栈上完成一个操作,如果这些是我在无限循环中的唯一延迟,我可能会很快且不必要地生成一个荒谬的大机器人的事件队列。
那时,我检查了 的 APIjava.awt.Robot.delay(int ms)
,它告诉我以下内容:
休眠指定的时间。要捕获任何
InterruptedException
发生的 s,Thread.sleep()
可以改为使用。
由于未能对此事获得任何有用的见解,我选择问你们。