До недавнего времени наше приложение совместно использовало один экземпляр Apache HttpClient, используя ThreadSafeClientConnManager для всего приложения. Экземпляр http-клиента был проведен с помощью одноэлементного класса.
Поскольку мне не нравится шаблон singleton для его многочисленных проблем, я реорганизовал наш API-интерфейс как объект с потоком, но теперь для каждого потока (что в основном означает для каждого действия/службы в нашем случае) создается новый экземпляр HttpClient.
Не то, чтобы у меня были проблемы с этим новым подходом, но я читал, что люди Apache предлагают иметь только один экземпляр для каждого приложения по причинам производительности.
Визуально, что мы делали раньше:
HttpClient (thread safe)
|
|
/\
/ \
Activity1...ActivityN
Теперь мы делаем следующее:
Activity1 ... ActivityN
| |
| |
HttpClient1 HttpClientN
Как вы, ребята, делаете это в своих приложениях? Если вы используете один HttpClient в своем приложении и потенциально много параллельных потоков, как вы обрабатываете доступ к нему?