
Java并发编程原理分析
文章平均质量分 84
由浅入深,逐步分析Java中的并发编程。
熠熠98
脚踏实地,仰望星空!
欢迎访问博客:lish98.blog.youkuaiyun.com
展开
-
并发工具1_线程池
1 自定义线程池 实现阻塞任务队列 实现线程池基本框架 实现worker 注意事项 taskQueue有安全保障 没有实现jdk中的救急线程 1.1 第一版 @Slf4j(topic = "test") public class Test { public static void main(String[] args) { ThreadPool threadPool = new ThreadPool(2, 1000, TimeUnit.MILLISECONDS, 10);原创 2021-12-07 09:45:24 · 232 阅读 · 0 评论 -
实现一个简单的线程池?
1 自定义线程池 实现步骤 首先要定义一个存放所有线程的集合,每当有任务分配给线程池,我们就从线程池中分配一个线程处理它 但是当线程池中的线程都在运行状态,没有空闲线程时,此时有任务传给线程池是没有空闲线程执行它的,因此我们还需要一个阻塞队列来存储提交给线程池的任务 补充说明 利用函数式接口来实现用户自定义拒绝策略 没有实现jdk中的救急线程 2 实现步骤 2.1 自定义拒绝策略接口 @FunctionalInterface interface RejectPolicy<T>原创 2021-12-07 09:44:30 · 373 阅读 · 0 评论 -
并发编程之模式篇
异步模式之工作线程 1 定义 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式。 注意,不同任务类型应该使用不同的线程池,这样能够避免饥饿,并能提升效率 2 饥饿 固定大小线程池会有饥饿现象 两个工人是同一个线程池中的两个线程 他们要做的事情是:为客人点餐和到后厨做菜,这是两个阶段的工作 客人点餐:必须先点完餐,等菜做好,上菜,在此期间处理点餐的工人必须等待 后厨做菜:没啥说的,做就是了原创 2021-12-07 09:48:21 · 545 阅读 · 0 评论 -
原理剖析之synchronized
本文针对synchronized原理以及JVM针对synchronized的优化进行了剖析原创 2021-12-05 23:37:48 · 372 阅读 · 0 评论 -
原理剖析之ConcurrentMap
1 JDK 7 HashMap 并发死链 1.1 死链分析 jdk7 将遍历到的节点放入到链表头,那么在多线程扩容时就容易出现线程死链问题 流程分析 假设 (1) ==> (35) ==> (16) 是一条链 Thread-0 扩容迁移节点时 e (1)->(35)->(16)->null next (35)->(16)->null 但此时Thread-1提前扩容完成,先遍历到 (1)再遍历到(35),将后遍历到的(35)方到链表头,(1原创 2021-12-13 10:39:55 · 1038 阅读 · 0 评论 -
补充之Java对象头
Java对象头对学习并发编程的原理很重要,例如synchronized关键字的原理,所以有必要提前学习一下原创 2021-12-04 22:28:06 · 270 阅读 · 0 评论