public Map<Class<?>, Boolean> handlerSharableCache() {
Map<Class<?>, Boolean> cache = handlerSharableCache;
if (cache == null) {
// Start with small capacity to keep memory overhead as low as possible.
handlerSharableCache = cache = new WeakHashMap<Class<?>, Boolean>(4);
}
return cache;
}
请问这种显得多余的操作,有什么原因吗
1
sutra 2018-06-19 11:52:58 +08:00
那句话是多余的?还是说你觉得这整个函数的逻辑是多余的? 懒汉式?
|
2
zjp 2018-06-19 12:06:01 +08:00 via Android 1
|
3
VoidChen 2018-06-19 13:39:08 +08:00
注释是多余的(手动狗头)
|
4
metrxqin 2018-06-19 13:42:46 +08:00
多线程下可能重复初始化。
|
5
feiyuanqiu 2018-06-19 13:54:27 +08:00
if (cache == null) {
// ... } 这里的做法是 lazy initialization, handlerSharableCache 属性在类实例化时不会初始化,直到第一次使用时才初始化。好处是提高程序初始化时的性能,坏处时降低了每次访问属性时的性能,并且这段代码不是线程安全的 |