并发编程
Static_lin
热爱技术热爱学习的程序猿
展开
-
深入源码分析JUC框架中的AQS
深入源码分析J.U.C框架中的AQS文章目录深入源码分析J.U.C框架中的AQS1. 前言1.1 什么是AQS?1.2 为什么要学习AQS?2. 深入源码分析AQS2.1 AQS中的成员变量2.2 AQS中的内部类2.3 AQS中的方法2.3.1 state的线程安全2.3.2 AQS中比较常用且重要的方法3. 分析重入锁,理解AQS3.1 重入锁实战分析4. 总结5. ReentrantLoc...原创 2019-04-25 20:01:20 · 485 阅读 · 0 评论 -
ConcurrentHashMap是如何实现线程安全的
ConcurrentHashMap是如何实现线程安全的文章目录ConcurrentHashMap是如何实现线程安全的前言相关概念Amdahl定律初始化数据结构时的线程安全总结put操作的线程安全总结扩容操作的线程安全扩容时的get操作多线程协助扩容在什么情况下会进行扩容操作?总结统计容器大小的线程安全假设当前线程为第一个put的线程出现了线程竞争导致CAS失败计数桶扩容总结get操作的线程安全总...原创 2019-05-25 18:08:40 · 41378 阅读 · 26 评论 -
从Java线程池实现原理到如何配置一个合适的线程池
文章目录前言为什么要使用线程池线程池的运行原理的源码分析线程池状态启动线程池创建线程线程池的工人 “Worker”启动工人,开启线程工人获取任务拒绝策略默认拒绝策略(抛异常)最旧淘汰策略(丢弃)关闭线程池温和关闭线程池暴力关闭线程池小结配置一个合适的线程池合适的线程数量合适的阻塞队列低耗时任务高耗时任务定时任务前言本文会出现一些阻塞队列相关的只是,这种队列除了有队列Queue的特性之外,还有...原创 2019-09-01 14:37:40 · 694 阅读 · 0 评论 -
生产-消费模型之"阻塞队列"的源码分析
文章目录前言阻塞队列API存放元素boolean add(E e)boolean offer(E e)boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException;void put(E e) throws InterruptedException获取元素E take() throws InterruptedE...原创 2019-09-01 14:45:13 · 268 阅读 · 0 评论 -
阻塞队列的首选之队列超集LinkedTransferQueue
文章目录前言队列的语义切换线程安全的队列Hand-off(SynchronousQueue语义)无界的阻塞队列LTQ原理分析假设阻塞特性1. 来一个线程存数据2. 又来一个线程存数据3. 来一个线程取数据总结前言这次讨论的议题是 JDK 1.7 新增的一个阻塞队列LinkedTransferQueue,那么它与上一篇我们讨论的那3个基本的阻塞队列有什么不同呢?为什么JDK1.7的时候需要在JU...原创 2019-09-05 16:51:47 · 281 阅读 · 0 评论