私のアプリケーションには 2 つのスレッドがあります。スレッド 1 はスレッド 2 にデータを転送しています。データが転送された後、スレッド 1 のデータはスレッド 2 内でクリアされます。スレッド 1 は、後でスレッド 2 に転送されるデータが入ってくると、HashMap に追加のデータを配置して楽しく進みます。その間、スレッド 2 はデータに対して必要な処理を行います。以下のコードは、スレッド間のデータ転送が発生するスレッド 2 の部分です。アプリケーション全体は問題なく動作しますが、私の質問は、キーワード new を使用してまったく新しいオブジェクトを作成せずに、スレッド 1 のデータのこのコピーをスレッド 2 に作成するより良い方法はありますか?
これを行うと、より多くのガベージコレクションが発生する可能性があると思いますか? これは気にしなくてもいいのでしょうか?
synchronized(this){
// Make a copy of the data map then clear it.
cachedData = new HashMap<String,ArrayList<Float>>(data);
data.clear();
}