Threads и ArrayList
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Threads и ArrayList Expand / Collapse
Автор
Сообщение
24.08.2006 15:37


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.10.2007 19:44
Сообщ.: 477, Visits: 4 198
не имею опыта и хочу уточнить
наследую от класса Threads
Создаю один глобальный ArrayList
потоки работают полностью независимо друг от друга и пишут результаты - add все в один этот аррайлист.
Это нормально?
Надо ли что-то предусматривать?


------------------------------
Мое почтение к уважаемому собранию!
Сообщ. #903273
24.08.2006 17:02
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 23.05.2007 20:20
Сообщ.: 662, Visits: 5 795
Конечно, одновременно он не должны писать. Либо один, либо вротой. Но не оба сразу. А в остальном они могут работать параллельно.
Сообщ. #903286
24.08.2006 19:03
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 28.06.2008 13:52
Сообщ.: 1 298, Visits: 12 499
Все очень просто, создавайте список следующим образом:


import java.util.*;

...
List globalList = Collections.synchronizedList(new ArrayList());
...


А потом спокойно используйте его в потоках, он будет 100% thread-safe.

Удачи,
Владимир

P.S. Рекомендую погуляться по методам класса java.util.Collections - некоторые очень даже занимательные, если не сейчас, то могут в будущем пригодиться. Есть также класс с подборкой полезных методов и для массивов: java.util.Arrays

Сообщ. #903298
24.08.2006 19:55


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.10.2007 19:44
Сообщ.: 477, Visits: 4 198
вэри биг сэнкс!

------------------------------
Мое почтение к уважаемому собранию!
Сообщ. #903304
24.08.2006 20:41


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.10.2007 19:44
Сообщ.: 477, Visits: 4 198
А если одну и ту-же int из разных Threads менять?
Делать ++ ?
Корректно будет?


------------------------------
Мое почтение к уважаемому собранию!
Сообщ. #903311
24.08.2006 22:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
sushestvuet uzhe sinhronizirovaniy Object - Vector.
Izmenyat ++ mozhno konechno esli nado izmenyat na 1.
esli na chto to drugoe togda
int1 += int2;
Сообщ. #903316
25.08.2006 1:15
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 28.06.2008 13:52
Сообщ.: 1 298, Visits: 12 499
mishgun все правильно сказал
хотя я все равно обычно предпочитаю ArrayList
Сообщ. #903321
25.08.2006 1:32
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 13.04.2007 22:11
Сообщ.: 16, Visits: 140
Еще можно создать accessor'ы для своей property и сделать их synchronized.
Сообщ. #903323