Безопасно ли хранить ссылку на поток в синглтоне? - PullRequest
6 голосов
/ 15 ноября 2010

Позвольте мне дать вам сценарий.

Скажите, что моя первая активность, которая загружается, также создает поток, который будет бесконечно работать в фоновом режиме.

Теперь, если я перейду к другому действию, я предполагаю, что поток, который я изначально создал в основном действии, продолжит работу.

Итак, теперь мой главный вопрос - для того, чтобы управлять этим фоновым потоком из других операций, безопасно ли хранить ссылку на этот поток в одноэлементном объекте?

Ответы [ 2 ]

4 голосов
/ 15 ноября 2010

Да и нет.Теоретически у вас не возникнет проблем, но вы не должны позволять ссылкам скрываться.

Могут возникнуть проблемы из-за того, что ссылка в одиночном объекте является конфиденциальной, она не должна передавать ссылку на что-либо еще или разрешать доступ к ней.кем-либо еще, или он может потерять контроль.

Во-вторых, поток, созданный вашей деятельностью, не должен разрешать доступ к своим переменным-членам или не разрешать ссылки на них.

Хорошая книга оэта область - «Параллелизм Java на практике» Брайана Гетца

2 голосов
/ 15 ноября 2010

На самом деле вам нужно быть осторожным, если у вас несколько загрузчиков классов.Singleton - это всего лишь singleton, если вы используете один и тот же загрузчик классов для загрузки класса. Если в вашем приложении несколько загрузчиков классов, использующих одни и те же классы, у вас будет другой экземпляр singleton в каждом.

Большинство автономных приложений используют только один загрузчик классов и поэтому не имеют никаких проблем.Если у вас есть только один загрузчик классов, все будет в порядке.

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