java基础
open_the_windows
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中线程池简单总结
前言池化技术在很多领域都有应用,比如数据库连接池,HTTP连接池以及线程池。实际上都是预先建立一些连接缓存,有具体的任务时就可以直接分配,减少新建立资源时的消耗,提供更快的响应速度。基本原理jdk1.8中封装了Executors工具类作为初始化线程池的入口。该类提供好几种线程池初始化方法。我就简单研究了public static ExecutorService newFixedThreadPool(int nThreads)方法。 public static ExecutorService newF原创 2021-08-16 15:41:27 · 157 阅读 · 0 评论 -
Java中Label的使用
前言在研究线程池相关代码的过程中发现了jdk1.8下rt.jar/java/util/concurrent/ThreadPoolExecutor.java中在addWorker()里判断线程池使用状态时使用了:Label,break Label,continue Label。不禁想起golang中也有类似的使用。介绍Java中,一般通过break和continue只能影响一层循环,而通过声明Label配合continue Label以及break Label可以影响到多层循环。简单测试如下 pub原创 2021-08-16 14:20:49 · 2891 阅读 · 0 评论 -
Java中HashMap扩容机制
前言jdk1.8中源码位于rt.jar/java/util/HashMap.java机制初始值设置从源码可以看出,初始容量16,装载因子0.75,碰撞的结果初始以链表形式存储,当链表长度大于8时,调整为红黑树存储,保证最坏情况下查询、插入、删除的效率[wiki]。 /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPA原创 2021-08-13 11:26:58 · 502 阅读 · 0 评论 -
Java中System.arraycopy和Arrays.copyOf
前言在ArrayList扩容机制中注意到,数组的深拷贝有用到两种方法:System.arraycopy()和Arrays.copyOf()。比较System.arraycopy()是native方法,参数需要传递源数组和目标数组。public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,原创 2021-08-12 13:41:04 · 504 阅读 · 0 评论 -
Java中StringBuffer和StringBuilder扩容机制
前言了解一些java底层设计最直接最准确的的方法就是源码了。StringBuffer和StringBuilder都继承自AbstractStringBuilder。jdk1.8中源码位于rt.jar/java/lang/路径下。相关源码初始的空闲容量都是16,当调用append方法时调用的都是super.append即AbstractStringBuilder中方法,所以扩容机制相同。 // StringBuffer.java public StringBuffer() {原创 2021-08-12 10:36:10 · 1103 阅读 · 1 评论 -
Java中ArrayList扩容机制
前言jdk1.8源码位于rt.jar/lang/util/ArrayList.java源码解读先看下一些初始设置 /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; /** * Shared empty array instance used for empty instances. */ private stat原创 2021-08-12 11:34:48 · 218 阅读 · 0 评论
分享