我有一个Sping Boot 控制器,它进行两次服务调用。第二次调用应该只在10秒后发生,在得到第一次调用的响应后。
public SomeResponse myAction() {
res = serviceCallA();
waitFor(10) {
serviceCallB();
}
return res;
}
这个动作不需要等待serviceCallB()的响应,只需要在单独的线程中触发serviceCallB()的调用就可以了。
什么是实现这一点的最佳方式?我需要类似ThreadPoolTaskExecutor的东西,但有延迟。
示例代码会很棒..
3条答案
按热度按时间fnvucqvd1#
很直白的回答;
也是
但是要小心,因为这些调用将在新线程中运行这些
serviceCallB()
逻辑,如果没有适当的控制,可能会导致内存问题和杀死您的服务器。06odsfpq2#
使用一个承诺,而不是1999年的可怕的
Thread.sleep
,它浪费了宝贵的系统资源。令
serviceCallA
返回Mono<Something>
(项目React堆),则:在每个库中,可能有6种方法来实现这一点,以上就是其中之一。
gmxoilav3#
使用java.util.concurrent包,您可以获得执行程序