特定のスレッドが提供されたクラスのインスタンスとして実行しているセルオートマタンを実行しています。新しい機能、つまりシミュレーションの進行中にマウス入力を介してライブ セルを追加するには、メイン スレッドからシミュレーションを実行しているクラスのインスタンスにアクセスして、Draw クラスが使用する 2D コンテナーという名前の ArrayList> "world" を変更する必要があります。参考に塗装します。
しかし、ArrayList はスレッドセーフではなく、エラーが発生します。この時点で、セルの「世界」は 50x50 しかありませんが、そのサイズを 10000^2 またはそれ以上に拡張したいと考えています。(私はその大きさで quadTrees を使用します)
したがって、私の質問は、スレッドセーフであり、すべてのシステム リソースを大量に使用せず、quadTree の概念と「互換性がある」、どのような種類のコンテナーを使用する必要があるかということです。
私はマルチスレッドについてよく知りません。このような重いスレッドを気にする場合、アイデアを破棄する必要がありますか?それとも、ユーザーの入力を評価する間、スレッドを一時停止できますか?(実際に試してみました。スレッドをスリープ状態になり、その間にインスタンスにアクセスしようとしましたが、成功しませんでした。)
いくつかのスレッドセーフなコンテナーを確認しましたが、それらのパフォーマンスは、それらを反復処理するか、それらのプロパティを編集するかなどによって異なります。考慮すべきことが多すぎます。どなたかがどの方向を選択すればよいか教えていただければ幸いです、アンドリュー。