|
|
|
Синхронизация потоков.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Вопрос такой. Существует несколько потоков которые работают с одним и тем же List<Type>. Они могут удалять, добавлять и редактировать элементы. Как синхронизировать это дело? В идеале бы сделать так, чтобы когда одни из потоков работает с List то все остальные ждут пока он закончит, что-то вроде очереди. Как такое реализовать? Достаточно ли в таком случае инициализировать List как Collections.synchronizedList(new ArrayList<Type>()) и потом при обращении к нему из потоков использовать такую конструкцию? Заранее огромное спасибо за помощь и советы! Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2012, 05:12:53 |
|
||
|
Синхронизация потоков.
|
|||
|---|---|---|---|
|
#18+
GorloPavelДостаточно ли в таком случае инициализировать List как Collections.synchronizedList(new ArrayList<Type>()) и потом при обращении к нему из потоков использовать такую конструкцию? Не "и", а "или". Достаточно одного из этих способов. Но на практике часто несколько действий необходимо выполнить как одно, без посторонних - например, посмотреть, нет ли уже объекта в списке и только тогда добавить. Тогда лучше создать отдельный класс, сам список держать в нем как private поле, а методы доступа объявить synchronized. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2012, 08:07:25 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2131967]: |
0ms |
get settings: |
12ms |
get forum list: |
26ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
57ms |
get topic data: |
15ms |
get first new msg: |
10ms |
get forum data: |
4ms |
get page messages: |
59ms |
get tp. blocked users: |
3ms |
| others: | 353ms |
| total: | 549ms |

| 0 / 0 |
