Thread.sleep(时间)vs. robot.wait(时间)



我正在尝试使用JUnit和FEST编写一些GUI和集成测试。以下是我的文件:

@Before
public void setUp(){
    try{
        program.main(args);
        robot.wait(30000);    //gives IllegalMonitorStateException
        Thread.sleep(30000);  //no Exception occurs here
    } catch (Exception e){
        e.printStackTrace();
    }
}

robotargs已经初始化。

为什么我调用wait时得到这样的异常?为什么当我调用sleep时没有得到相同的异常?

您正在调用Object.wait() -这是Thread.sleep()相同。特别是:

  • wait()要求您已经拥有在
  • 上调用它的对象上的监视器。
  • wait()允许线程被通知(通过Object.notify/notifyAll)并提前唤醒;Thread.sleep()将要求线程被中断。

wait()方法与notify()方法一起用于同步线程。而不是用于在给定线程中延迟一段时间。

你得到这个异常,因为为了在一个线程上wait(),你必须首先采取该线程的监视器(通过某种synchronized块或方法)。

使用Thread.sleep()

也许你正在寻找

robot.delay(...);

相关内容

  • 没有找到相关文章