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 ![]() |
![]() | 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 属性在类实例化时不会初始化,直到第一次使用时才初始化。好处是提高程序初始化时的性能,坏处时降低了每次访问属性时的性能,并且这段代码不是线程安全的 |