Robot.delay(int)与Thread.sleep(long) - java

我有一个程序,其唯一目的是无限循环驱动java.awt.Robot直到满足退出条件。

机械手快速连续执行许多动作,这需要它们之间具有标准的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()

未能对此事获得任何有用的见解,我选择问你们。

参考方案

起初,我还要假设使用delay()会生成大量事件,特别是在读取waitForIdle()的javadoc之后:

等待直到事件队列上当前的所有事件都已处理

但是在检查延迟时间为正数且不超过1分钟后,检查Robot.delay()的源代码表明它基本上是Thread.sleep()!

摘要:两种解决方案几乎相同,请使用Thread.sleep()延迟超过1分钟或捕获InterruptedException。

用Java进行多年编程之后,我发现了如何无需捕获InterruptedException就可以入睡(不考虑创建Robot的开销)

Java-将int更改为ascii - java

java有没有办法将int转换为ascii符号? 参考方案 您是否要将int转换为char?:int yourInt = 33; char ch = (char) yourInt; System.out.println(yourInt); System.out.println(ch); // Output: // 33 // ! 还是要将int转换为Stri…

为什么我的按位运算不能在Java中与`int`一起使用? - java

我刚得到以下编译器错误:./package/path/FrameScreenPosition.java:80: incompatible types found : int required: boolean if (frame.getExtendedState() & Frame.MAXIMIZED_BOTH) { ^ “扩展状态”是各种不同状态的…

Java Swing双击并拖动以选择整个单词 - java

在大多数文本编辑器和平台中,有两种使用鼠标选择文本的方式:常规的Click + Drag,将选择的结尾与鼠标光标一起移动到双击+拖动,与#1相同,但它首先选择一个完整的单词,然后将选择的结尾对齐到整个单词但是,在Swing GUI中,#2不能如上所述工作。它可以通过选择双击所在的整个单词来正确开始,但是在选择过程中,它不会对整个单词进行而不是捕捉。有什么方法…

Java中long的模运算符是什么? - java

如何在Java中找到两个长数值的模(%)?我的代码说“整数太大”,后面跟我要修改的数字。我尝试将其强制转换很长时间,但没有成功。我是否必须将其转换为BigInteger并使用剩下的方法?谢谢。 参考方案 %运算符确实可以工作很长时间。听起来您好像已经忘记将L粘贴在数字文字的末尾,就像123456789L一样。我们可以看到您的代码吗?

在Java中停止执行几秒钟的最佳方法是什么? - java

我是Java新手。我试图编写一个程序来检查数据库状态(是否过载)。码:package com.test.service; import java.util.LinkedList; import java.util.List; public class PersonImpl { public PersonService personService; publi…