![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Допустим я пишу thread-safe класс:
Конечно, я бы не задумывался о какой-либо синхронизации если бы в моем классе работа шла только с классом Vector, на самом деле у меня полно кода, который надо синхронихировать, поэтому мой вопрос относится только к методу getVector(), а именно если весь класс синхронизирован через локи, то надо ли синхронихировать thread-safe коллекции когда работа идет только с ними? -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
get возвращает reference и ничего с этим методом делать не надо в принципе. Эта операция safe
-------------------- SCJP 5.0, SCJD |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Думаю что да, мой вопрос несколько бессмымленен, потому что если даже рассмотреть вариант с изменением вектора внутри getVector() то самое большее чего можно достигнуть "залочив" метод getVector это синхронизировать другие операции относительно состояния всего класса ThreadSafe -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
yaja |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 30.3.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Ну возвращать ссылку на внутренний объект vector, крайне опасно. Поскольку другой поток может сделать с ним что угодно, а твой класс об это ничего знать не будет. Поэтому синхронизировать этой метод тоже бессмысленно.
Безопаснее и правильнее написать:
|
|||
|
||||
niasilil |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
Такой совет на все случаи жизни не работает. Даже более того, чаще так делать не стоит, потому что память она не резиновая и думать заранее куда она расходуется очень полезно. -------------------- SCJP 5.0, SCJD |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |