并发编程
董董董不懂
做任何事,都有它存在的意义,有些是实实在在的,另一些是潜移默化的,感谢每一天的生命。
展开
-
ConcurrentHashMap1.8源码初读
前言:最近在看《java并发编程的艺术》这本书上看到了juc包下的并发容器concurrentHashMap的实现,基于segment+数组+链表的锁分段技术,在看jdk1.8源码时,发现虽然segment对象还存在,但是已没有该对象的引用,在jdk1.8之后已放弃segment+数组+链表的锁分段技术,而采用cas算法+synchronized+(数组+链表+红黑树)实现,我猜想应该和jdk1.8中优化了synchronized关键字有关吧~jdk1.7和jdk1.8在实现上的异同jdk1.7:se原创 2020-08-23 18:10:17 · 240 阅读 · 0 评论 -
java并发包之AQS实现以及锁的应用
第三次打开了《java并发编程的艺术》这本书,希望通过这八月份的学习,能对以AQS为基础的java并发包有更深刻的理解和应用,本篇文章主要梳理了AQS底层实现以及重入锁、读写锁的特性。AQS的底层实际上是由变量同步状态和双向同步队列组合实现,所以本篇文章需要先了解双向队列的数据结构哦~知识梳理源码浅谈独占式添加尾节点 /** * Creates and enqueues node for current thread and given mode. * * @pa原创 2020-08-09 20:04:13 · 131 阅读 · 0 评论 -
并发与线程之美
背景:cpu、内存、I/O设备不断迭代,但是在快速发展过程中,有一个核心矛盾一直存在,就是三者的速度差异,为了提高计算机性能,合理利用cpu,做出了以下方案:cpu增加了缓存,均衡与内存的速度差异操作系统增加了进程、线程,以分时复用cpu编译程序优化了指令执行效率,使缓存更加合理的利用出现的问题:但是这也是并发程序异常的根源之处缓存导致了可见性问题(一个线程对共享变量的修改,另...原创 2019-03-12 20:01:08 · 220 阅读 · 0 评论 -
并发编程面试题汇总
并发编程Thread.currentThread()方法来获取系统当前正在执行的一条线程,多线程:怎么实现线程安全,各个实现方法有什么区别,volatile关键字的使用,可重入锁的理解,Synchronized是不是可重入锁?https://www.cnblogs.com/baizhanshi/p/7211802.htmlReenTrantLock的字面意思就是再进入的锁,其实synchr...原创 2019-03-25 11:19:14 · 870 阅读 · 0 评论