
java之并发专题
Life journey
技术没有边界
展开
-
并发编程之条件队列CyclicBarrier(栅栏)
并发编程之条件队列CyclicBarrier(栅栏)CyclicBarrier栅栏Condition队列AQS内部定义了ConditionObjectCyclicBarrier实现原理构造方法Condition.await()signalAllCyclicBarrier执行流程(图解)CyclicBarrier栅栏CyclicBarrier栅栏是AQS中除共享锁、独占锁之外的一种条件锁的一种实现,CyclicBarrier和semaphor以及countDownlatch在实现上有一定的区别,Cycli原创 2020-10-09 11:42:55 · 690 阅读 · 6 评论 -
并发编程之AQS(抽象队列同步器)共享锁
并发编程之AQS(抽象队列同步器)共享锁前言Semaphore信号量Semaphore 的构造semaphore.acquire()doAcquireSharedInterruptibly(int arg)semaphore.release()unparkSuccessor(h)实列分析入队解锁出队CountDownLatchcountDown()await流程图前言在上一遍笔记中详细介绍了AQS抽象队列同步器的独占锁,在AQS中,独占锁的实现是使用ReentrantLock来实现的,那么共享锁在AQS原创 2020-10-09 11:32:47 · 236 阅读 · 0 评论 -
并发编程之AQS(抽象队列同步器)独占锁
并发编程之AQS(抽象队列同步器)独占锁前言AQS原理同步器队列结构ReentrantLock类构造队列的数据结构信息Nodelock过程lock图解过程unlock过程unlock图解过程总结前言在介绍AQS之前,我专门写了CAS、Volatile、synchronized、阻塞队列,链表以及线程中断的笔记,因为在学习AQS之前,如果对于这些基础的东西不了解的话,那么AQS你是看不懂的,AQS我自己认为还是比较难的,但是只要是学习技术,那么如果都那么简单的话,那也就没有专门来学习的必要了,我也难得写笔原创 2020-09-26 18:22:46 · 404 阅读 · 0 评论 -
并发编程之线程中断&CAS
并发编程之线程中断&CASsynchronized和LOCK的区别线程中断线程中断之唤醒CAS原理什么是CASAtomicInteger(CAS典型使用案例)compareAndSwapInt jvm中的实现CAS缺点什么是ABA问题如何解决ABA问题synchronized和LOCK的区别在前面的笔记中已经记录了synchronized,这个锁是JVM内置的锁,不需要程序员手动释放锁,我们在前面已经知道了synchronized锁主要是使用monitor锁的机制来实现的,而synchroniz原创 2020-09-26 18:02:42 · 321 阅读 · 0 评论 -
Synchronized详细介绍之锁升级过程
Synchronized详细介绍之锁升级过程前言线程与进程的区别进程线程区别协程二级目录三级目录前言我们在并发编程过程中,会有一些资源或者操作是必须要进行序列化访问的,就是线程之间不能并发的访问,必须要进行串行访问,所以就引入了锁的概念,java中只用的锁主要有两种,一种是jdk内置的锁,一种是juc包下面的锁,jdk内置的锁是不要释放的,由jvm自动给我们释放锁,而juc包下面的锁是有Doug Lea大神开发的,在编程的时候需要在finally进行锁的释放,否则很容易导致死锁;线程与进程的区别谈到原创 2020-09-24 15:07:15 · 3850 阅读 · 6 评论 -
Volatile内存屏障&指令重排
Volatile内存屏障&指令重排前言内存屏障CPU缓存架构之伪共享指令重排as-if-serialhappens-beforeJIT指令重排序指令重排序的手段volatile重排序规则前言在上一篇笔记中提到了volatile关键字的作用,我们知道并发编程的三大理论是可见性、有序性和原子性,而volatile只能保证可见性和有序性,有序性是什么呢?有序性就是让程序能够有序的执行,volatile可以禁止指令重排,但是指令重排在应用中其实很常见的,比如简单的例子就是当cpu在执行一条指令的时候,执原创 2020-09-18 22:19:13 · 2459 阅读 · 3 评论 -
并发编程之JMM模型&Volatile底层原理
并发编程之JMM模型&Volatile底层原理并发编程的本质JMM模型并发编程带来的风险计算机组成并发之可见性并发编程的本质并发编程为什么要有?为什么我们要做并发编程,并发编程是实质是什么?我觉得并发编程是一种艺术,在现在的时代,硬件的性能在不断的提升,以前的单核CPU现在已经发展成为了多核CPU,性能已经不断提升,如果我们还保留着以前的单线程程序的话,那么只会出现硬件性能过剩的情况;我们来思考一个问题并发编程的本质是解决什么问题?并发编程在一定的意义上其实就是多线程编程,那么多线程编程中主要有原创 2020-09-18 21:56:24 · 445 阅读 · 4 评论