我正在开发一个简单的Java测试框架,需要通过响应JMS调用来模拟weblogic部署。其中一个测试配置选项是模拟延迟的延迟。我想知道是否有人对如何做到这一点有任何好的想法。我是jsut要创建一个TimerTask来处理它,有更好的方法吗?感谢。
答案 0 :(得分:3)
您可以创建一个ScheduledExecutorService来执行延迟后的操作。
private final ScheduledExecutorService executor =
Executors.newSingleThreadScheduledExecutor();
// is main loop, waits between 10 - 30 ms.
executor.schedule(new Runnable() { public void run() {
// my delayed task
}}, 10 + new Random().nextInt(20), TimeUnit.MILLI_SECOND);
编辑:您可以将Concurrency Backport用于JDK 1.4。它适用于JDK 1.2到JDK 6
答案 1 :(得分:3)
创建一个模拟服务器的对象。当它“接收”你的输入时,让它产生一个新的线程来“处理连接”,就像真正的服务器一样。产生的线程可以将Thread.sleep()转换为其内容,以模拟发送和接收延迟,并允许您模拟在测试期间可能有用的一些服务器状态属性。
答案 2 :(得分:2)
如何
Thread.sleep(10 + new Random().nextInt(20)); // waits between 10 - 30 ms.
即。在响应JMS调用的代码中,您只需使用它来模拟随机延迟延迟。
答案 3 :(得分:0)
您可以使用Quartz安排作业,这是否可以解决问题?