Java - Каков наиболее эффективный способ синхронизации ArrayList? - PullRequest
5 голосов
/ 02 мая 2011

Моя программа имеет поток рендеринга openGL и поток изменения данных. Поток рендеринга обращается к данным в куче ArrayLists, в то время как поток изменения данных изменяет, удаляет и добавляет объекты в ArrayLists. Потоки обновляются примерно 60 раз в секунду, и манипуляция с ArrayList является узким местом программы. Я пробовал синхронизировать блоки (очень медленно), CopyOnWriteArrayLists (довольно медленно) и создавать буферные ArrayLists в потоке рендеринга (меньшее из трех зол). Каков «лучший» способ получить максимальную эффективность от одновременных списков массивов?

Ответы [ 2 ]

3 голосов
/ 02 мая 2011
List<YourObject> syncList = Collections.synchronizedList(yourList);
1 голос
/ 02 мая 2011

Лучший механизм - выполнять свою работу в потоке GL и выполнять операции очереди.Если в списке есть только один поток, проблема не возникает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...