Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Синхронизация потоков. / 2 сообщений из 2, страница 1 из 1
21.04.2012, 05:12:53
    #37764199
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация потоков.
Здравствуйте. Вопрос такой. Существует несколько потоков которые работают с одним и тем же List<Type>. Они могут удалять, добавлять и редактировать элементы. Как синхронизировать это дело? В идеале бы сделать так, чтобы когда одни из потоков работает с List то все остальные ждут пока он закончит, что-то вроде очереди. Как такое реализовать? Достаточно ли в таком случае инициализировать List как Collections.synchronizedList(new ArrayList<Type>()) и потом при обращении к нему из потоков использовать такую конструкцию? Заранее огромное спасибо за помощь и советы!
Код: javascript
1.
2.
3.
synchronized(myList) {
     myList.remove(MyType.this);
}
...
Рейтинг: 0 / 0
21.04.2012, 08:07:25
    #37764238
rfq
rfq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация потоков.
GorloPavelДостаточно ли в таком случае инициализировать List как Collections.synchronizedList(new ArrayList<Type>()) и потом при обращении к нему из потоков использовать такую конструкцию?
Не "и", а "или". Достаточно одного из этих способов.
Но на практике часто несколько действий необходимо выполнить как одно, без посторонних - например, посмотреть, нет ли уже объекта в списке и только тогда добавить. Тогда лучше создать отдельный класс, сам список держать в нем как private поле, а методы доступа объявить synchronized.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Синхронизация потоков. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]