Java中的javascript setTimeout相当于什么?
2022-08-31 16:34:06
我需要实现一个函数,以便在单击按钮60秒后运行。请帮忙,我使用了Timer类,但我认为这不是最好的方法。
我需要实现一个函数,以便在单击按钮60秒后运行。请帮忙,我使用了Timer类,但我认为这不是最好的方法。
使用 JDK 1.8 的异步实现:
public static void setTimeout(Runnable runnable, int delay){
new Thread(() -> {
try {
Thread.sleep(delay);
runnable.run();
}
catch (Exception e){
System.err.println(e);
}
}).start();
}
使用 lambda 表达式进行调用:
setTimeout(() -> System.out.println("test"), 1000);
或使用方法参考:
setTimeout(anInstance::aMethod, 1000);
要处理当前正在运行的线程,只需使用同步版本:
public static void setTimeoutSync(Runnable runnable, int delay) {
try {
Thread.sleep(delay);
runnable.run();
}
catch (Exception e){
System.err.println(e);
}
}
在主线程中谨慎使用 - 它将在调用后暂停所有内容,直到过期并执行。timeout
runnable
使用Java 9 CompletableFuture,每个简单:
CompletableFuture.delayedExecutor(5, TimeUnit.SECONDS).execute(() -> {
// Your code here executes after 5 seconds!
});