我在我的項目中使用http-client 4.3.x。爲了關閉「閒置」連接,我啓動了一個線程來監視連接池,並嘗試關閉每秒鐘閒置30秒的連接。如何測試我的httpClient可以關閉閒置連接?
的的ConnectionManager:
PoolingHttpClientConnectionManager connectionManager =
new PoolingHttpClientConnectionManager(registry);
的線程來監視並關閉閒置連接:
class ClosingIdleConnectionThread extends Thread {
private final PoolingHttpClientConnectionManager connectionManager;
private final int timeout;
public ClosingIdleConnectionThread(PoolingHttpClientConnectionManager connectionManager, int timeout) {
this.connectionManager = connectionManager;
this.timeout = timeout;
}
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
connectionManager.closeIdleConnections(timeout, TimeUnit.MILLISECONDS);
connectionManager.closeExpiredConnections();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
return;
}
}
}
}
但現在我有兩個問題:
- 其實,我不是確定「閒置」連接意味着什麼
- 我要wr伊特一些測試,以確保我的代碼工作,但我不知道如何測試它
感謝您的幫助〜
看起來while循環永遠不會進入,因爲如果你沒有被中斷,Thread.currentThread()。isInterrupted()將返回false。 – Stephan
感謝您收到此錯誤!剛剛在語句前添加了'!' – Freewind