其中一个EJB类正在调用外部API &如果在一段时间后出现故障,我会重试。由于管理线程不是一个好主意(不推荐使用Thread.sleep(1000)),有人能告诉我如何在EJB2中延迟/挂起进程一段时间吗?谢谢。
发布于 2012-06-01 02:53:09
我认为,如果线程成功,那么多次睡眠1秒的问题就是不必要的等待时间。
您可以尝试使用join来代替睡眠。
join(5000)将等待线程完成的时间长达5秒。如果它提前完成,您的执行将继续执行。如果它没有提前完成,你的执行将在5秒后恢复。
sleep方法使用polling技术,而join使用修改后的interrupt方案。
发布于 2012-06-01 03:16:38
作为一种解决方法,如果出现故障,则可以创建一个具有适当超时持续时间的计时器,在本例中,超时持续时间将是延迟持续时间。
在超时方法中,您可以再次调用EJB,EJB将进一步调用外部API。
https://stackoverflow.com/questions/10839222
复制相似问题