![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发学习
文章平均质量分 60
11408考研休息室
这个作者很懒,什么都没留下…
展开
-
Java并发编程的艺术-七-十章
原创 2021-10-23 17:21:42 · 47 阅读 · 0 评论 -
Java并发编程-ThreadPoolExecutor
一、核心参数 corePool 核心线程池大小 maximumPool 最大线程池大小 BlockingQueue 工作队列 RejectedExecutionHandler 当Executor已经关闭或饱和,需要拒绝的策略。 二、分类 FixedThreadPool SingleThreadExecutor CachedThreadPool 三、通用Executor执行模型 当前线程数量小于corePoolSize,创建一个新的线程来执行任务 如果线程大于等于corePoolSize,工作队列不原创 2021-10-23 00:38:10 · 70 阅读 · 0 评论 -
Java并发容器与框架的实现
一、ConcurrentHashMap 1.1 背景 多线程中,HashMap导致程序死循环(HashMap采用拉链法解决hash冲突,当链表大于了装载因子对应的最大容量,需要重新进行散列。问题发生在这里,多线程可能同时出发rehash,形成了链表的回路);HashTable会阻塞其他线程,效率低下。ConccurentHashMap使用分段锁,把数据分段,每一段配一把锁。 1.2 结构 由Segment数组和HashEntry数组组成。Segment是一个ReentrantLock,当作锁。HashEnt原创 2021-10-22 01:14:54 · 92 阅读 · 0 评论 -
Java并发-锁的获取和撤销机制
Java对象头 个人总结 Biasable 可偏向:bitfields为0 Biased 已经加偏向锁:bitfields为线程ID 轻量级锁快速上锁机制fast locking • 在当前线程栈中创建存储锁记录的空间 • 将对象头mark work复制到lock record中(displaced mark word) • 线程尝试用CAS将mark word替换为指向锁记录lock recordœ的指针 • 如果成功,当前线程获得锁,如果失败,意味着其他线程在竞争锁,尝试自旋获取锁,次数过多升级为重量原创 2021-10-16 02:45:48 · 372 阅读 · 0 评论