非常に複雑な操作を実行するオブジェクトのインスタンスがあります。キャッシュスレッドを安全にする方法
最初のケースでは、インスタンスを作成して、それを自分のカスタムキャッシュに保存します。
準備が整ったオブジェクトがすでにキャッシュに存在することが判明した場合は、スレッドがどんなものであっても、キャッシュから取り出すことでパフォーマンスが向上します。
私は、2つのスレッドが同じインスタンスを持っているかどうかについて心配しました。 2つのスレッドが互いに破損する可能性があります。
Map<String, SoftReference<CacheEntry<ClassA>>> AInstances= Collections.synchronizedMap(new HashMap<String, SoftReference<CacheEntry<ClassA>>>());
キャッシュはそのコピーへの参照を渡しますか、それともコピーを受け取りますか?スレッドはどのようにキャッシュされたオブジェクトに変更を書き込むのですか?これらの書き込みはキャッシュをバイパスしますか?その場合、キャッシュ上のコピーが失効しているため、キャッシュからデータが取り出されますか? – ArjunShankar
キャッシュに依存しますので、コードを投稿してください。 –
インスタンスのスレッドの安全性に依存しませんか?また、キャッシュへのアクセスを同期させて、1つのスレッドだけがインスタンスを取得できるようにすることもできます。 –