SF
并发编程
并发编程
注册登录
关注博客
注册登录
主页
关于
RSS
(十二) ConcurrentHashMap分段锁设计原理
跟着Mic学架构
2021-09-27
阅读 8 分钟
2k
最后一个部分,也是ConcurrentHashMap中设计比较巧妙的地方。我们知道,当调用完put方法后,ConcurrentHashMap必须会增加当前元素的个数,方便在size()方法中获得存储的数据大小。代码的实现如下。
(十一) 深度分析ConcurrentHashMap中的并发扩容机制
跟着Mic学架构
2021-09-27
阅读 14 分钟
3.4k
说到扩容,相比各位读者都不陌生,无非就是创建一个扩容目标大小的数组,把原来老数组中的数据迁移到新数组中来即可,这种方式比较适合在没有多线程并发的场景中完成,但是在ConcurrentHashMap中并没有那么简单,因为在多线程环境下进行扩容时,会存在其他线程同时往集合中添加元素。
(十)深度剖析ConcurrentHashMap原理及源码
跟着Mic学架构
2021-09-26
阅读 19 分钟
2.8k
ConcurrentHashMap是JDK1.5引入的一个并发安全且高效的HashMap,简单来说,我们可以认为它在HashMap的基础上增加了线程安全性的保障。实际上,关于HashMap的线程安全问题,各位读者应该有一些了解,在JDK1.7的版本中,HashMap采用的是数组+链表的数据结构来存储数据,在多个线程并发执行扩容时,可能造成环形链导致死循...
(九)深入分析AQS实现原理
跟着Mic学架构
2018-12-14
阅读 13 分钟
71.2k
简单解释一下J.U.C,是JDK中提供的并发工具包,java.util.concurrent。里面提供了很多并发编程中很常用的实用工具类,比如atomic原子操作、比如lock同步锁、fork/join等。
(八)ThreadLocal的使用及原理分析
跟着Mic学架构
2018-12-05
阅读 14 分钟
2.8k
ThreadLocal,简单翻译过来就是本地线程,但是直接这么翻译很难理解ThreadLocal的作用,如果换一种说法,可以称为线程本地存储。简单来说,就是ThreadLocal为共享变量在每个线程中都创建一个副本,每个线程可以访问自己内部的副本变量。这样做的好处是可以保证共享变量在多线程环境下访问的线程安全性
(七)Volatile的作用及原理
跟着Mic学架构
2018-12-04
阅读 16 分钟
4.3k
文章简介 分析volatile的作用以及底层实现原理,这也是大公司喜欢问的问题 内容导航 volatile的作用 什么是可见性 volatile源码分析 volatile的作用 在多线程中,volatile和synchronized都起到非常重要的作用,synchronized是通过加锁来实现线程的安全性。而volatile的主要作用是在多处理器开发中保证共享变量对于多线程...
(六) synchronized的源码分析
跟着Mic学架构
2018-12-04
阅读 26 分钟
6.6k
前面我有文章介绍了synchronized的基本原理,这篇文章我会从jvm源码分析synchronized的实现逻辑,希望让大家有一个更加深度的认识
(五)Synchronized原理分析
跟着Mic学架构
2018-12-04
阅读 8 分钟
5k
synchronized想必大家都不陌生,用来解决线程安全问题的利器。同时也是Java高级程序员面试比较常见的面试题。这篇文正会带大家彻底了解synchronized的实现。
(四)Thread.join的作用和原理
跟着Mic学架构
2018-12-04
阅读 5 分钟
9k
文章简介 很多人对Thread.join的作用以及实现了解得很少,毕竟这个api我们很少使用。这篇文章仍然会结合使用及原理进行深度分析 内容导航 Thread.join的作用 Thread.join的实现原理 什么时候会使用Thread.join Thread.join的作用 之前有人问过我一个这样的面试题 Java中如何让多线程按照自己指定的顺序执行? 这个问题最...
(三)从jvm层面了解线程的启动和停止
跟着Mic学架构
2018-12-04
阅读 14 分钟
3.4k
文章简介 这一篇主要围绕线程状态控制相关的操作分析线程的原理,比如线程的中断、线程的通信等,内容比较多,可能会分两篇文章 内容导航 线程的启动的实现原理 线程停止的实现原理分析 为什么中断线程会抛出InterruptedException 线程的启动原理 前面我们简单分析过了线程的使用,通过调用线程的start方法来启动线程,...
(二)线程的应用及挑战
跟着Mic学架构
2018-12-04
阅读 5 分钟
1.4k
引入多线程的目的在第一篇提到过,就是为了充分利用CPU是的程序运行得更快,当然并不是说启动的线程越多越好。在实际使用多线程的时候,会面临非常多的挑战
(一)线程的发展历史
跟着Mic学架构
2018-12-04
阅读 3 分钟
2.4k
作为一个合格的Java程序员,必须要对并发编程有一个深层次的了解,在很多互联网企业都会重点考察这一块。可能很多工作3年以上的Java程序员对于这一领域几乎没有太多研究。所以在接下来内容中,我会将并发编程整个领域由浅到深做非常全面的分析。