【问题标题】:Jsystem: Thread.sleep() in testcase pauses MonitorJsystem:测试用例中的 Thread.sleep() 暂停监视器
【发布时间】:2010-05-03 06:41:25
【问题描述】:

我想我错过了一些基本的东西,regadring 线程。但是,这是我的问题:

我有一个显示器正在运行。另一方面,我有一个测试。测试确实执行了几次 sql 查询,每次执行之间都会等待一些 ms 与 Thread.sleep(xy)。

for (int i = 0; (i < iterationsteps); i++) { 
    rs = myQuery.execute(); 
    //check if rs is empty 
    if (!rs.next()) { Thread.sleep(1000); 
    } 
}

现在的问题是,由于这个 Thread.sleep(1000),Monitor 似乎也进入了睡眠状态(至少它不检查)。我认为监视器是一个单独的线程。

【问题讨论】:

  • 如果只有一个线程监控Monitor,当单线程休眠时它不会做任何事情。是否有多个线程?

标签: java multithreading monitoring


【解决方案1】:

我不确定你的代码的目标是什么,但有一点是肯定的,myQuery.execute() 会一直阻塞直到它完成。

如果您想在后台执行此操作,则必须为其生成一个单独的线程:

    new Thread() {
        public void run() {
            rs = myQuery.execute(); 
        }
    }.start();

但是,这有很多含义。有些是显而易见的,有些则不是,而且肯定需要一些同步代码。

除非您知道自己在做什么,否则我强烈建议您使用单线程方法。

【讨论】:

  • 解释:测试向应用程序发送消息(例如txt文件),然后检查处理情况以及数据是否已添加到数据库中。处理时间取决于消息,因此我会定期检查表格以获取指定的最大值。时间(-> 迭代步数)。如果指定时间后表中没有数据,则测试将失败,否则继续。监视器本身检查另一个表,如果该表有新条目,它必须警告甚至停止测试。
猜你喜欢
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
相关资源
最近更新 更多