Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
EJB 类之一正在调用外部 API,如果在一段时间延迟后出现故障,我想重试。由于管理线程不是一个好主意(不建议使用 Thread.sleep(1000)),有人可以告诉我如何在 EJB2 中延迟/暂停进程一段时间吗?谢谢。
作为一种解决方法,如果出现故障,那么您可以创建一个具有适当超时持续时间的计时器,在这种情况下将是延迟持续时间。
在超时方法中,您可以再次调用 EJB,这将进一步调用外部 API。
如果线程成功,我认为您多次睡眠 1 秒的问题是不必要的等待时间。
您可以尝试使用 join 代替睡眠,而不是睡眠。
join(5000)
最多会等待 5 秒以使线程完成。如果它提前完成,您的执行将继续。如果它没有提前完成,您的执行将在 5 秒后恢复。
sleep 方法使用轮询技术,而 join 使用修改后的中断方案。