1

EJB 类之一正在调用外部 API,如果在一段时间延迟后出现故障,我想重试。由于管理线程不是一个好主意(不建议使用 Thread.sleep(1000)),有人可以告诉我如何在 EJB2 中延迟/暂停进程一段时间吗?谢谢。

4

2 回答 2

0

作为一种解决方法,如果出现故障,那么您可以创建一个具有适当超时持续时间的计时器,在这种情况下将是延迟持续时间。

在超时方法中,您可以再次调用 EJB,这将进一步调用外部 API。

于 2012-05-31T19:16:37.707 回答
0

如果线程成功,我认为您多次睡眠 1 秒的问题是不必要的等待时间。

您可以尝试使用 join 代替睡眠,而不是睡眠。

join(5000)

最多会等待 5 秒以使线程完成。如果它提前完成,您的执行将继续。如果它没有提前完成,您的执行将在 5 秒后恢复。

sleep 方法使用轮询技术,而 join 使用修改后的中断方案。

于 2012-05-31T18:53:08.573 回答