java - 线程帮助与 Android 游戏

标签 java android multithreading thread-safety

我需要一些帮助来处理 Android 中的三个线程

一个线程是主线程,一个是GLThread,另一个是我创建的用来更新游戏状态的WorkerThread。

我遇到的问题是它们都需要访问相同的游戏对象链表。 GLThread 和我的 WorkerThread 都只从 LinkedList 读取,所以没有问题,但偶尔我会让主线程将另一个游戏对象添加到列表中。

我该如何管理它?我尝试在涉及的函数前面使用同步,但它确实会降低应用程序的速度。

出于某种原因,仅仅捕获错误而不渲染或更新该帧的游戏状态,导致它开始永久滞后。

有人有什么好主意吗?

最佳答案

我建议使用 CopyOnWriteArrayList。这会在备份列表发生变化时复制它,但允许不同步读取,但要权衡一下,您是从即时读取列表到写操作。

关于java - 线程帮助与 Android 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440080/

相关文章:

C++11 线程等待行为:std::this_thread::yield() 与 std::this_thread::sleep_for( std::chrono::milliseconds(1) )

java - 从 Java BlockingQueue 并发按顺序处理工作项

java - JPanel 一侧的虚线边框

java - 极少数在处理时如何表现?

android - 一个 Surface 上的多个视频

ios - 繁重的 CPU 处理以加热设备

c++ - 如何在C++中设置线程数

java - Spring全局事务

android - TabLayout 不在 Marshmallow 上显示标签标题

android - cordova 虚拟机初始化期间发生错误