Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Анализ доступа к ArrayList
#11
я не знаю что у тебя этот класс делает и что хранится _normalSkillTree и где используется/изменяется, если там статика, а ты достаешь оттуда лист и потом его модифицируешь, конечно будет конкурентка и еще куча левых багов
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Ответ
#12
hex1r0 Написал:я не знаю что у тебя этот класс делает и что хранится _normalSkillTree и где используется/изменяется, если там статика, а ты достаешь оттуда лист и потом его модифицируешь, конечно будет конкурентка и еще куча левых багов

Код:
    private static TIntObjectHashMap<List<SkillLearn>> _normalSkillTree = new TIntObjectHashMap<List<SkillLearn>>();
Ответ
#13
сделай как я выше написал, должно помочь
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Ответ
#14
В общем всем спасибо.
Психонул, сделал ConcurrentHashMap :bz:
Ответ
#15
при чем там хешмап, если ошибка в листе
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Ответ
#16
оффтоп
consulo.io - Consulo - multi-language IDE
Ответ
#17
hex1r0 Написал:тут видимо ошибка в алгоритме (это при условии что _normalSkillTree должна хранить/хранит статические данные)

PHP код:
<?php 
public Collection<SkillLearn> getAvailableAllSkills(Player player)
{
final
Collection<SkillLearn> skills;
// тут ошибка видимо
// skills = _normalSkillTree.get(player.getActiveClassId());
skills = new ArrayList<>(_normalSkillTree.get(player.getActiveClassId()));
if (
player.isAwaking())

тут как раз то, что тебе нужно.
у тебя же ошибка:
ты берёшь ArrayList из _normalSkillTree, он у тебя один для всех игроков с одним classId по ходу и зачем то туда добавляешь потом скилы, по этому и выходит: тут ты добавляешь, а в другом потоке бежишь по коллекции и у тебя вылазит ConcurrentModificationException. Создавай для таких манипуляций отдельный список.
[Изображение: l2nextgen.gif]
Ответ
#18
причем конкурентка тут еще не самое страшное, а страшное то, что у персов будет по 100500 скилоф Big Grin
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Ответ
#19
Про ConcurrentHashMap - протупил)
Просто в другой сборке такое увидел, вот она меня и сбила с толку)

Точнее там FastList.setShared

Добавлено через 2 минуты
bloodshed Написал:тут как раз то, что тебе нужно.
у тебя же ошибка:
ты берёшь ArrayList из _normalSkillTree, он у тебя один для всех игроков с одним classId по ходу и зачем то туда добавляешь потом скилы, по этому и выходит: тут ты добавляешь, а в другом потоке бежишь по коллекции и у тебя вылазит ConcurrentModificationException. Создавай для таких манипуляций отдельный список.

Благодарю)
Ответ
#20
ALFOS Написал:Про ConcurrentHashMap - протупил)
Просто в другой сборке такое увидел, вот она меня и сбила с толку)

Точнее там FastList.setShared

Javadoc используемых фреймворков читать не пробовали?
P.S: ваша версия javolution безбожно устарела, обновитесь.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  ArrayList vs CopyOnWriteArrayList Aquanox 3 4,703 07-08-2008, 05:33 PM
Последний пост: CHIPSET

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)