![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JDK源码
文章平均质量分 68
学习jdk源码
ethannotlazy
这个作者很懒,什么都没留下…
展开
-
HashMap源码浅析
HashMap简介 HashMap继承了AbstractMap,实现了Map, Cloneable, Serializable接口: HashMap的一些参数 HashMap的默认起始大小为16,最大容量为2^30: /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // ak原创 2021-04-03 12:04:19 · 86 阅读 · 0 评论 -
CountDownLatch使用方法及原理浅析
CountDownLatch简介 CountDownLatch是一个一种同步辅助类,它可以让一个或多个线程等待,直到一系列操作在其他线程中完成。 在日常开发中会遇到需要主线程等待多个线程并行执行任务,并且主线程需要等待子线程执行完毕后进行汇总。在CountDownLatch出现之前我们使用线程的join方法实现,但是join方法不如CountDownLatch灵活。 CountDownLatch使用示例: public class CountDownLatchTest { private stat原创 2020-05-09 18:00:57 · 236 阅读 · 0 评论 -
异步日志实现的源码解析
同步日志打印模型的缺点是将日志写入磁盘的操作是由业务线程同步调用完成的;当业务线程把要打印的日志放入一个队列后直接返回,然后用一个线程专门负责从队列中取出日志任务并写入磁盘时,就成为了异步日志。 以下描述异步日志logback的实现。 logback的类图结构如下: 其中主要的功能在AsyncAppenderBase中实现。 该类的一些成员变量: AppenderAttachableImpl<E> aai = new AppenderAttachableImpl<E>();原创 2020-05-08 23:01:37 · 628 阅读 · 0 评论 -
Executor源码浅析
Executor 该类用来执行提交的任务,对任务提交和任务执行之间进行解耦,任务执行的细节包括线程的使用、调度等。通常使用Executor而不是明确地创建线程。 Executor的源码如下: public interface Executor { /** * 在未来一定时间内执行给出的命令,这个命令可能在新线程、线程池的线程、调用线程执行,这取决于Executor的实现。 ...原创 2020-05-05 21:58:13 · 330 阅读 · 0 评论 -
利用Callable和Future类创建线程
Callable 该接口包含一个函数call,实现该方法来定义一个任务,这个任务具有返回值T,且可以抛出异常。 Callable的源码如下: @FunctionalInterface public interface Callable<V> { V call() throws Exception; } Future 一个Future对象代表一个异步计算的结果,该类提供了方法用...原创 2020-05-03 23:13:55 · 473 阅读 · 0 评论