我正在做一个细胞自动机,它作为一个类的实例运行,并为它提供了一个特定的线程。对于新功能,即在模拟进行时通过鼠标输入添加活细胞,我必须从主线程访问进行模拟的类的实例,以修改其 ArrayList>“world”命名的 2D 容器,我的 Draw 类使用作画作参考。
但是 ArrayList 不是线程安全的,我得到了错误。此时我的单元“世界”只有 50x50,但我想将其大小扩展到 10000^2 甚至更大。(我会在那个量级使用 quadTrees)
所以我的问题是,我应该使用哪种容器,既是线程安全的,又不会占用更高数量级的所有系统资源,并且与 quadTree 概念“兼容”。
我对多线程不太了解,我是否应该放弃这个想法,如果打扰这样的重量级线程,或者我可以在评估用户输入期间暂停线程吗?(实际上我试过了,我把线程睡眠并尝试同时访问实例,但没有成功。)
我检查了一些线程安全容器,它们的性能取决于我是否只是迭代它们或编辑它们的属性等。有太多的事情要考虑,如果有人能告诉我选择什么方向,我真的很感激,安德鲁。