【发布时间】:2011-08-17 03:11:39
【问题描述】:
我的程序有一个 OpenGL 渲染线程和一个数据修改线程。渲染线程访问一组 ArrayLists 中的数据,而数据修改线程更改、删除对象并将对象添加到 ArrayLists。线程每秒更新大约 60 次,而 ArrayList 操作是程序的瓶颈。我已经尝试过同步块(超慢)、CopyOnWriteArrayLists(非常慢),以及在渲染线程中创建缓冲区 ArrayLists(三害相权取其轻)。从并发 ArrayList 中获得最大效率的“最佳”方法是什么?
【问题讨论】:
-
“ArrayLists 群”的算法和拓扑你需要多说一些。
-
您是否考虑过利用
ConcurrentHashMap或ConcurrentSkipListMap/Set? -
您是否将 java.util.concurrent 包视为同步块的替代方案?
-
您正在访问/修改什么样的数据?也许有比 ArrayLists 更有效的结构。
标签: java multithreading data-structures synchronization arraylist