2

ライトバック キャッシュを実装しようとしています。ソフト参照を使用しようとしていますが、参照が gcQueue に追加される前にクリアされ、参照対象オブジェクトにアクセスできないため、事後ライトバックの実行に問題があります。

ソリューション?

4

1 に答える 1

2

Guava の Mapmakerを試すことができます。

例:

final ConcurrentMap<Long, Integer> cache = new MapMaker()
        .softValues().expiration(20,TimeUnit.MINUTES)
        .makeComputingMap(new Function<Long, Integer>() {
              @Override
            public Integer apply(Long arg0) {
                return null;
            }
            });

SO マップメーカーに関する質問:

代替オプション:

guavaライブラリの一部でもあるSupplier クラスのmemoizeWithExpirationを使用します。

于 2010-11-09T10:31:10.657 に答える