Timeout
A policy on how much time to spend on a task before giving up. When a task times out, it is left in an unspecified state and should be abandoned. For example, if reading from a source times out, that source should be closed and the read should be retried later. If writing to a sink times out, the same rules apply: close the sink and retry later.
Timeouts and Deadlines
This class offers two complementary controls to define a timeout policy.
Timeouts specify the maximum time to wait for a single operation to complete. Timeouts are typically used to detect problems like network partitions. For example, if a remote peer doesn't return any data for ten seconds, we may assume that the peer is unavailable.
Deadlines specify the maximum time to spend on a job, composed of one or more operations. Use deadlines to set an upper bound on the time invested on a job. For example, a battery-conscious app may limit how much time it spends pre-loading content.
Types
Functions
Waits on monitor
until it is signaled. Throws InterruptedIOException if either the thread is interrupted or if this timeout elapses before monitor
is signaled. The caller must hold the lock that monitor is bound to.
Clears the deadline.
Clears the timeout. Operating system timeouts may still apply.
Returns true if a deadline is enabled.
Applies the minimum intersection between this timeout and other
, run block
, then finally rollback this timeout's values.
Throws an InterruptedIOException if the deadline has been reached or if the current thread has been interrupted. This method doesn't detect timeouts; that should be implemented to asynchronously abort an in-progress operation.
Returns the timeout in nanoseconds, or 0
for no timeout.
Waits on monitor
until it is notified. Throws InterruptedIOException if either the thread is interrupted or if this timeout elapses before monitor
is notified. The caller must be synchronized on monitor
.