Програмата ми има OpenGL нишка и aнишка за модификация на данни. Контурът за рендиране достига до данните в група от ArrayLists, докато нишката за промяна на данните променя, премахва и добавя обекти към ArrayLists. Нишките се обновяват около 60 пъти в секунда, а манипулацията на ArrayList е пречка за програмата. Опитах синхронизиращи блокове (супер бавно), CopyOnWriteArrayLists (доста бавно) и създавам буфер ArrayLists в нишката за рендиране (по-малко от три злини ). Какъв е "най-добрият" начин за постигане на максимална ефективност от едновременни ArrayLists?
Отговори:
1 за отговор № 1Най-добрият механизъм е да извършите работата си в GL нишката и операциите на опашката, които трябва да бъдат изпълнени. Ако само една нишка има достъп до списъка, няма проблем.
3 за отговор № 2
List<YourObject> syncList = Collections.synchronizedList(yourList);