240605-国际化之Locale类的缓存了解

37 阅读1分钟

Locale

Locale源码

public final class Locale implements Cloneable, Serializable {

    static private final  Cache LOCALECACHE = new Cache();
	
	// 内部类Cache
	private static class Cache extends LocaleObjectCache<LocaleKey, Locale> {
        private Cache() {
        }

        @Override
        protected Locale createObject(LocaleKey key) {
            return new Locale(key.base, key.exts);
        }
    }
}

所以我们想在代码中添加缓存时,可以参考这个方式(局部变量+内部类)!!!

下面了解下LocaleObjectCache类

LocaleObjectCache源码

public abstract class LocaleObjectCache<K, V> {
	// 用ConcurrentMap进行存储
    private ConcurrentMap<K, CacheEntry<K, V>> map;
	
	// 引用队列
    private ReferenceQueue<V> queue;
}

引用队列(ReferenceQueue)有时间看看