天天看點

okhttp3源碼分析之Timeout

定義:負責管理逾時操作的類。

包含方法:

  1. Timeout timeout(long timeout, TimeUnit unit)
設定最多等待時間,傳回目前類對象。
  1. long timeoutNanos()
傳回設定的逾時時間(毫秒)
  1. boolean hasDeadline()
如果啟用了截止時間,傳回true
  1. long deadlineNanoTime()
傳回截止時間
  1. Timeout deadlineNanoTime(long deadlineNanoTime)
設定截止時間,傳回目前類對象。
  1. Timeout deadline(long duration, TimeUnit unit)
在現在時間的基礎上加上截止時間
  1. Timeout clearTimeout()
清除逾時控制,系統仍可以繼續使用。
  1. Timeout clearDeadline()
清楚截止時間
  1. void throwIfReached()

如果已達到截止日期或目前線程已被中斷,則抛出{@link InterruptedIOException}

具體檢測方法:1.線程是否被中斷 2.是否符合截止時間條件

  1. final void waitUntilNotified(Object monitor)
等待(monitor),直到收到通知。如果線程被中斷或在monitor之前逾時,抛出InterruptedIOException。必須在monitor上同步呼叫。