Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Java "setTimeout" equivalent. (Credit: Oleg Mikhailov, http://stackoverflow.com/a/36842856)
// Asynchronous implementation with 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();
}
// To call with lambda expression:
setTimeout(() -> System.out.println("test"), 1000);
// Or with method reference:
setTimeout(anInstance::aMethod, 1000);
// To deal with the current running thread only use a synchronous version:
public static void setTimeoutSync(Runnable runnable, int delay) {
try {
Thread.sleep(delay);
runnable.run();
}
catch (Exception e){
System.err.println(e);
}
}
//Use this with caution in main thread – it will suspend everything after the call until timeout expires and runnable executes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment