MapMaker

Google collections Library の MapMaker は多くの課題を解決してくれる気がする。

ConcurrentMap<String,String> map = new MapMaker()
                                  .concurrencyLevel(8)
                                  .expiration(20,TimeUnit.SECONDS)
                                  .makeMap();

とすれば、mapに格納したものは、20秒で消滅、複数スレッド同時アクセス制限=8

makeMap() makeComputingMap() が、ConcurrentMap<K,V> を返すが、
concurrencyLevel、expiration、softKeys、weakKeys などは MapMaker を返す。

ソフト参照 softKeys() softValues() を付与すれば、

ConcurrentMap<String,String> map = new MapMaker()
                                  .concurrencyLevel(8)
                                  .softKeys()
                                  .softValues()
                                  .makeMap();

これはソフト参照でGCが削除してくれる。