
Java
文章平均质量分 71
紫眸少年丶
405311518
展开
-
HashMap的初始容量(位运算详解)
为演示效果我这里使用反射的方式直接调用HashMap类里的tableSizeFor(intcap)方法测试容量的返回值。,有些同学在遇到位运算(提高系统的运行效率)实现的方法时,读起来就有些吃力了,例如HashMap类中的tableSizeFor(intcap)方法,源代码如下。当我们使用HashMap集合没有指定初始容量时默认是16,如果给定了一个初始容量,tableSizeFor(intcap)方法会返回一个等于。来作为集合的初始容量。如果用户给定的初始容量就等于2的n次方,那么返回的。...转载 2022-07-18 10:18:44 · 684 阅读 · 0 评论 -
ThreadLocal的使用及内存泄漏问题分析
每一个Thread对象均含有一个ThreadLocalMap类型的成员变量threadLocals,它存储当前线程中所有ThreadLocal对象及其对应的值。部分源码如下 而ThreadLocalMap中的核心就是一个个Entry对象,以下是ThreadLocalMap的部分源码 我们通过一张图来清楚地表示ThreadLocal的引用关系 代码示例(不使用ThreadLocal的情况) 运行结果(尝试多运行几次,排除程序运行结果出现的偶然性) 代码示例(引入ThreadLocal对象转载 2022-07-18 10:11:44 · 224 阅读 · 0 评论 -
单例模式的简单实现
为什么上述懒汉式单例是线程不安全的呢,如下代码,在Lazy类的无参构造中加入一行打印并引入多线程场景进行测试。在类的一个生命周期中静态代码块只在类加载时执行一次,可以满足单例模式的设计要求(此处暂不考虑。类型是Java5中新增特性的一部分,也是类(class)的一种,自带单例模式,且可以防止。概念23种设计模式之一,通过单例模式的方法创建的类在整个应用程序中只有一个实例。无论该对象是否被使用,在类加载的时候都会被创建,一定程度上导致内存资源的浪费。类加载的时候就创建该类的唯一实例对象,...转载 2022-07-18 10:00:40 · 1187 阅读 · 0 评论 -
Java多线程应用场景(转载)
原文地址作者电影院新片首映,观影人数大量增加,为提高日营业额,线下售票窗口由原单窗口调整为3窗口,设计一段简单的程序模拟该售票过程。转载 2022-07-15 17:49:01 · 256 阅读 · 0 评论