Что произойдет, если я никогда не вызову closeExpiredConnections с ThreadSafeClientConnManager - PullRequest
2 голосов
/ 20 января 2012

Я использую ThreadSafeClientConnManager для многопоточности в Java-приложении.Мой ThreadSafeClientConnManager объект является статическим, поэтому он остается до тех пор, пока приложение не будет запущено.

Что произойдет, если я никогда не вызову closeExpiredConnections() или closeIdleConnections()?

Произойдет ли сбой моего приложения вв долгосрочной перспективе?

1 Ответ

0 голосов
/ 20 января 2012

В следующем предполагается, что вы используете httpcmponents-client 4.1.2, который является текущим GA.

Судя по коду и javadocs, ничего плохого не произойдет. ThreadSafeClientConnManager имеет разумные ограничения. Если вы не изменили лимиты в сторону увеличения, в конечном итоге пул заполнится, и старые соединения будут удалены.

Одним из недостатков было бы то, что вы держитесь за незанятое и просроченное соединение, которое содержит ресурсы (файловые дескрипторы) и ненужные объекты. Но, опять же, если вы не изменили значения по умолчанию, количество этих ресурсов невелико по сравнению с тем, что доступно: 20 файловых дескрипторов из 1000 доступных в системе Linux.

Короче говоря: это не приведет к сбою приложения.

PS у этих библиотек есть доступный источник, вы сами должны увидеть, каковы последствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...