0

あるクラスのオブジェクトを返す Cached メソッドがあります。私のアプリはマルチスレッドです。あるスレッドがキャッシュされたオブジェクトを取得して処理すると、別のスレッドもこのオブジェクトを取得および変更でき、最初のスレッドに問題が発生します。

@Cacheable(value="MyCache")
Script parse(String scriptText) {
    return new MyObject(scriptText);
}

メソッドが同じオブジェクトではなく、キャッシュされたオブジェクトのコピーを返すように構成する方法。または、キャッシュされた値を要求するときにメソッドの結果をシリアル化し、逆シリアル化する方法。

Spring Boot と Ehcache を使用しています。

4

1 に答える 1

0

キャッシュ可能な注釈を削除すると、常に新しいオブジェクトが取得されます。そもそもオブジェクトをキャッシュする差し迫った理由はありますか? 通常、コンストラクターは安価です。キャッシュが時期尚早の最適化だった可能性はありますか?

于 2020-08-13T02:43:07.883 に答える