01 2019 档案

摘要:以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同 阅读全文
posted @ 2019-01-27 16:53 chen_hao 阅读(1361) 评论(0) 推荐(2) 编辑
摘要:以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同 阅读全文
posted @ 2019-01-25 18:56 chen_hao 阅读(1099) 评论(1) 推荐(1) 编辑
摘要:在上一篇线程池的文章《并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)》中从ThreadPoolExecutor源码分析了其运行机制。限于篇幅,留下了ScheduledThreadPoolExecutor未做分析,因此本文继续从源代码出发分析ScheduledThreadPool 阅读全文
posted @ 2019-01-18 09:31 chen_hao 阅读(3451) 评论(1) 推荐(5) 编辑
摘要:我们知道线程池运行时,会不断从任务队列中获取任务,然后执行任务。如果我们想实现延时或者定时执行任务,重要一点就是任务队列会根据任务延时时间的不同进行排序,延时时间越短地就排在队列的前面,先被获取执行。 队列是先进先出的数据结构,就是先进入队列的数据,先被获取。但是有一种特殊的队列叫做优先级队列,它会 阅读全文
posted @ 2019-01-16 14:24 chen_hao 阅读(2629) 评论(1) 推荐(3) 编辑
摘要:前两篇文章讲了线程池的源码分析,再来看这篇文章就比较简单了, 本文主要讲解 Executors 这个工具类,看看长江创建线程池的几种方法。 newFixedThreadPool 生成一个固定大小的线程池: 1 public static ExecutorService newFixedThreadP 阅读全文
posted @ 2019-01-14 16:12 chen_hao 阅读(1173) 评论(0) 推荐(1) 编辑
摘要:在上一篇《并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)》中提到了线程池ThreadPoolExecutor的原理以及它的execute方法。这篇文章是接着上一篇文章写的,如果你没有阅读上一篇文章,建议你去读读。本文解析ThreadPoolExecutor#submit。 对于 阅读全文
posted @ 2019-01-14 09:57 chen_hao 阅读(1606) 评论(0) 推荐(1) 编辑
摘要:史上最清晰的线程池源码分析 鼎鼎大名的线程池。不需要多说!!!!! 这篇博客深入分析 Java 中线程池的实现。 总览 下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) 接 阅读全文
posted @ 2019-01-11 16:18 chen_hao 阅读(2483) 评论(0) 推荐(1) 编辑
摘要:FutureTask是一个支持取消行为的异步任务执行器。该类实现了Future接口的方法。 如: 取消任务执行 查询任务是否执行完成 获取任务执行结果(”get“任务必须得执行完成才能获取结果,否则会阻塞直至任务完成)。 注意:一旦任务执行完成或取消任务,则不能执行取消任务或者重新启动任务。(除非一 阅读全文
posted @ 2019-01-09 15:58 chen_hao 阅读(1974) 评论(0) 推荐(1) 编辑
摘要:BlockingQueue 实现之 SynchronousQueue SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。 不像ArrayBlockingQueue或LinkedListBloc 阅读全文
posted @ 2019-01-09 09:30 chen_hao 阅读(1232) 评论(0) 推荐(1) 编辑
摘要:LinkedBlockingQueue 在看源码之前,通过查询API发现对LinkedBlockingQueue特点的简单介绍: 1、LinkedBlockingQueue是一个由链表实现的有界队列阻塞队列。2、新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素3、大小默认值为Integ 阅读全文
posted @ 2019-01-08 14:17 chen_hao 阅读(1402) 评论(0) 推荐(4) 编辑
摘要:一、基础篇JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 阅读全文
posted @ 2019-01-08 10:20 chen_hao 阅读(3025) 评论(2) 推荐(7) 编辑
摘要:开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现。 阻塞队列概要 阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列的阻塞添加和阻塞删除方法。 阻塞添加 所谓的阻塞添加是指当阻塞队列元素已满时,队列会阻塞加入元素的线程,直 阅读全文
posted @ 2019-01-07 16:47 chen_hao 阅读(1849) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示