Информация об изменениях

Сообщение Re[10]: Порядок инициализации от 16.09.2019 20:02

Изменено 16.09.2019 20:04 Passerby

Re[10]: Порядок инициализации
Здравствуйте, okon, Вы писали:
O>Имеется ввиду если их вообще убрать из полей и использовать как локальные переменные в методе — тогда будет очевидно что они используются только в этом методе из других мест к ним доступа нет.

O>Ну если у тебя инстанс какого-то объекта может быть вызван из разных потоков, например HttpClient, то есть большая вероятность что они начнут мешать друг другу и использовать какое-либо поле/состояние объекта одновременно, будут писать/читать, тем самым получится непредсказуемое поведение.

O>Поэтому безопаснее создавать инстанс каждый раз, в твоем случае локально в процедуре, тем самым гарантируя что если процедуру вызовут из двух разных потоков то у каждого HttpClient будет свое состояние.
Объект класса HttpClient большой и создавать его в каждом новом методе накладно. Кроме того есть рекомендация делать один такой объект на все вызовы.
Re[10]: Порядок инициализации
Здравствуйте, okon, Вы писали:
O>Имеется ввиду если их вообще убрать из полей и использовать как локальные переменные в методе — тогда будет очевидно что они используются только в этом методе из других мест к ним доступа нет.

O>Ну если у тебя инстанс какого-то объекта может быть вызван из разных потоков, например HttpClient, то есть большая вероятность что они начнут мешать друг другу и использовать какое-либо поле/состояние объекта одновременно, будут писать/читать, тем самым получится непредсказуемое поведение.

O>Поэтому безопаснее создавать инстанс каждый раз, в твоем случае локально в процедуре, тем самым гарантируя что если процедуру вызовут из двух разных потоков то у каждого HttpClient будет свое состояние.
Объект класса HttpClient большой и создавать его в каждом новом методе накладно. Кроме того есть рекомендация делать один такой объект на все вызовы. Ничего не может помешать вызывать его из разных потоков (что я и делаю).