Сообщений: 438
Тем: 4
Зарегистрирован: Apr 2011
Репутация:
839
я не знаю что у тебя этот класс делает и что хранится _normalSkillTree и где используется/изменяется, если там статика, а ты достаешь оттуда лист и потом его модифицируешь, конечно будет конкурентка и еще куча левых багов
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Сообщений: 438
Тем: 4
Зарегистрирован: Apr 2011
Репутация:
839
сделай как я выше написал, должно помочь
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Сообщений: 469
Тем: 55
Зарегистрирован: Feb 2010
Репутация:
3,209
В общем всем спасибо.
Психонул, сделал ConcurrentHashMap :bz:
Сообщений: 438
Тем: 4
Зарегистрирован: Apr 2011
Репутация:
839
при чем там хешмап, если ошибка в листе
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Сообщений: 608
Тем: 5
Зарегистрирован: Feb 2009
Репутация:
2,171
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. Создавай для таких манипуляций отдельный список.