wait() and sleep()
The
Object class also overloads the wait() method to
allow it to take a timeout specified in milliseconds (though, as we
mentioned in Chapter 2, the timeout resolution may
not be as precise as one millisecond):
- void wait(long timeout)
Waits for a condition to occur. However, if the notification has not occurred in
timeoutmilliseconds, it returns anyway. This is a method of the Object class and must be called from a synchronized block or method.- void wait(long timeout, int nanos)
Waits for a condition to occur. However, if the notification has not occurred in
timeoutmilliseconds andnanosnanoseconds, it returns anyway. This is a method of the Object class and must be called from a synchronized block or method.
These methods are provided to support external events. In cases where
we are only concerned with a notification arriving, we normally do
not use these methods. However, notifications can be dependent on
external conditions, in which case we are also concerned with when a
notification arrives. A timeout may be needed in case those
conditions do not occur. As an example, we might write a program that
connects to a stock feed server. The program may be willing to wait
30 seconds to connect to the server (that is, to satisfy the
condition of being connected); if the connection does not occur
within 30 seconds, the program may try to contact a backup server.
We’d accomplish this by calling the
wait(30000) method in our program.
We may still add a timeout when ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access