Exception: java.util.concurrent.TimeoutException
阿新 • • 發佈:2018-12-29
今天接手一個“寫的很複雜”的程式碼。多執行緒請求,有時候就會丟失返回值。
程式是這樣設定的,請求執行後自動執行重寫的complete()方法,把數值寫入全域性變數map中,之後對map進行操作。
其中的程式碼很複雜,就不貼上來了。map中偶爾會缺失資料,但不報錯。
後來我把complete()方法提取到主執行緒執行後,occured TimeoutException。
第一時間想到的是client設定timeout時間小了,結果真的是隻有5s,調高了之後沒有再出現問題。
connectionRequestTimeout:指從連線池獲取連線的timeout
connetionTimeout:指客戶端和伺服器建立連線的timeout,
就是http請求的三個階段,一:建立連線;二:資料傳送;三,斷開連線。超時後會ConnectionTimeOutException
socketTimeout:指客戶端從伺服器讀取資料的timeout,超出後會丟擲SocketTimeOutException
轉自http://blog.csdn.net/wangjin890620/article/details/54630219
RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(120 * 1000)
.setSocketTimeout(120 * 1000).setConnectTimeout(120 * 1000).build();
個人認為是connectionRequestTimeout,但是保險起見把所有都調高了,沒有出現問題。