Search code examples
kotlinwait

Kotlin - Wait function


Is there a wait function in kotlin? (I don't mean a Timer Schedule, but actually pause the execution). I have read that you can use Thread.sleep(). However, it doesn't work for me, because the function can't be found.


Solution

  • Thread sleep always takes a time how long to wait: https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#sleep(long)

    public static void sleep(long millis)
                      throws InterruptedException
    

    e.g.

    Thread.sleep(1_000)  // wait for 1 second
    

    If you want to wait for some other Thread to wake you, maybe `Object#wait()' would be better

    https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait()

    public final void wait()
                    throws InterruptedException
    

    Then another thread has to call yourObject#notifyAll()

    e.g. Thread1 and Thread2 shares an Object o = new Object()

    Thread1: o.wait()      // sleeps until interrupted or notified
    Thread2: o.notifyAll() // wake up ALL waiting Threads of object o