我想知道是否有一种方法可以在 java 中异步执行另一个函数 15 秒后执行一个函数。例如我有 2 个函数。
1. public void func1() {
}
2. public void func2() {
}
执行func1
后,15秒后我希望执行func2
。
理由 - Func1
对外部接口(interface)
进行更新
。外部接口(interface)
需要大约15秒的时间来处理和存储数据。 15 秒后,我想从界面
获取某些已处理的数据(URL)
并将其存储在数据库
中。我不希望用户等待完整的请求完成。请指教
最佳答案
从调用 func1()
的地方,生成一个将 hibernate 15 秒的线程,然后调用 func2()
。下面是演示,其中 main()
方法调用 func1()
,然后异步调用 func2
。该线程负责等待 15 秒,而不是 main
方法。 main
方法立即解除阻塞。
import java.util.Date;
public class AsyncCall {
public static void main(String[] args) {
AsyncCall solution = new AsyncCall();
solution.func1();
//async call
new Thread(() -> {
try {
Thread.sleep(15 * 1000);
solution.func2("async call");
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
//sync call : no need to call this but just for demo
solution.func2("sync call");
}
public void func1() {
System.out.println(new Date() + " : func1 called");
}
public void func2(String arg) {
System.out.println(new Date() + " : func2 called with arg: " + arg);
}
}
结果:
Wed Mar 30 13:15:52 EDT 2022 : func1 called
Wed Mar 30 13:15:52 EDT 2022 : func2 called with arg: sync call
Wed Mar 30 13:16:07 EDT 2022 : func2 called with arg: async call
关于Java - 在另一个函数执行 30 秒后异步调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71680997/