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