Безопасно ли передавать контекст нескольким потокам? - PullRequest
3 голосов
/ 04 апреля 2011

Я внедряю сервис, который выполняет вызовы REST для нескольких приложений. Результаты некоторых вызовов REST должны храниться в поставщике контента.

В настоящее время я пытаюсь использовать несколько потоков, которые будут выполнять HTTP-запрос, анализировать результат и сохранять данные в поставщике контента. Чтобы сделать это, я должен передать Контекст каждому из потоков. Я не уверен, что это хорошая идея, потому что я не знаю, можно ли использовать Контекст для передачи нескольким потокам из-за его размера, безопасности потока и т. Д. Я думаю, что передаю только ссылку на объект Context для каждого потока, так что, может быть, его несложно передать?

Ответы [ 2 ]

4 голосов
/ 04 апреля 2011

Да, это нормально.Я не верю, что требуется явная синхронизация, но многие интересные вещи, которые вы можете сделать с Context, должны происходить в потоке пользовательского интерфейса.

По этой причине обычно целесообразно сделать ваш httpзапрос внутри AsyncTask, который обеспечит выполнение вашей реализации onPreExecute и onPostExecute в потоке пользовательского интерфейса, а также предоставит хороший интерфейс для отмены.

3 голосов
/ 04 апреля 2011

Практически все в Java передается по ссылке, поэтому это не «тяжеловес».

Однако вам нужно быть осторожным, чтобы ваш доступ к членам Context был синхронизирован надлежащим образом, иначе вы будете иметьвопросы безопасности потоков.

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