Java并发
文章平均质量分 99
Juc,以及锁的C++层级的源码原理,以及操作系统级的原理
youthlql
如果图片显示有问题请看置顶文章
展开
-
Java并发体系-第四阶段-AQS源码解读-[1]-【万字文系列】
文章目录可重入锁LockSupport是什么?3种让线程等待和唤醒的方法Object类提供的等待唤醒机制的缺点正常情况下异常情况1异常情况2Condion类提供的等待唤醒机制的缺点LockSupport的优点异常情况1异常情况2AQSAQS是什么?AQS能干嘛?AQS独占模式(以ReentrantLock 源码为例)AQS结构Node类结构AQS队列基本结构开始非公平锁lock()加锁lock()acquire()和tryAcquire()addWaiter()enq()acquireQueued()sho原创 2020-11-24 00:51:14 · 5280 阅读 · 0 评论 -
Java并发体系-第三阶段-JUC并发包-[2]-【万字文系列】
文章目录Phaser工具简介重复使用的例子动态减少常用API注册到达onAdvance()监控子线程任务强制关闭监控API获取阶段数获取注册的数获得到达和未到达的数目Phaser的分层结构阻塞队列请谈谈对阻塞队列的理解种类核心方法阻塞队列的使用场景传统版生产者消费者模式 Demo阻塞队列版生产者消费者模式Demo线程池主要优点线程池七大参数入门简介线程池的底层工作流程线程池的4种拒绝策略线程池在实际生产中使用哪一个线程池合理配置参数线程池的状态线程池的关闭Executors简介newWorkStealing原创 2020-11-23 19:41:45 · 5023 阅读 · 3 评论 -
Java并发体系-第三阶段-JUC并发包-[1]-【万字文系列】
文章目录AtomicXXXFieldUpdater简介使用场景CountDownLatch简介使用场景一使用场景二常用API给离散的平行任务增加逻辑层次关系利用CountDownLatch实现回调函数CyclicBarrier引出API使用构造方法重要方法其他方法CyclicBarrier 与 CountDownLatch 区别Exchanger简介简单的应用方法介绍数据的分析ReentrantLock简介公平锁和非公平锁构造方法获得锁释放锁锁的调试Lock和synchronized的区别Semaphore原创 2020-11-23 19:39:57 · 5481 阅读 · 0 评论 -
Java并发体系-第二阶段-锁与同步-[3]-【万字文系列】
文章目录synchronized保证三大特性synchronized的特性可重入特性不可中断特性synchronized不可中断演示ReentrantLock可中断演示synchronized简单原理synchronized修饰代码块时monitorentermonitorexitsynchronized 修饰方法的的情况Java对象的布局(C++代码层面)对象头Mark Wordklass pointer实例数据对齐填充查看Java对象布局的方法Lock RecordLock Record的结构synch原创 2020-11-23 19:37:26 · 4976 阅读 · 0 评论 -
Java并发体系-第二阶段-锁与同步-[2]-【万字文系列】
文章目录可见性设计的硬件MESI-缓存一致性协议(简介)内存屏障的相关讲解基本内存屏障可见性保障有序性保障synchronizedvolatile强调MESI-缓存一致性协议(进阶)MESI-初步MESI-优化硬件层面的MESI协议为何会引发有序性和可见性的问题?内存屏障在硬件层面的实现原理原子操作的实现原理相关术语处理器如何实现原子操作使用总线锁保证原子性使用缓存锁保证原子性Java如何实现原子操作1、文章可能会优先更新在Github,个人博客,公众号【Github有】。其它平台会晚一段时间。个人博客原创 2020-11-23 19:34:31 · 4892 阅读 · 0 评论 -
Java并发体系-第二阶段-锁与同步-[1]-【万字文系列】
文章目录并发编程中的三个问题可见性可见性概念可见性演示原子性原子性概念原子性演示有序性有序性概念有序性演示指令重排为什么指令重排序可以提高性能?as-if-serial语义Java内存模型(JMM)计算机结构计算机结构简介CPU内存缓存Java内存模型CPU缓存,内存与Java内存模型的关系再谈可见性主内存与工作内存之间的交互happens-before什么是happens-before?天然的happens-before关系volatileCPU术语介绍volatile保证可见性原理volatile禁止指原创 2020-11-23 19:31:45 · 4889 阅读 · 0 评论 -
Java并发体系-第一阶段-多线程基础知识
文章目录程序、进程、线程的理解并行与并发单核CPU与多核CPU的理解并行与并发的理解创建线程的几种方法继承Thread类创建线程实现Runnable接口创建线程Thread和Runnable的关系Runnable接口构造线程源码Thread类构造线程源码最直观的代码描述实现Callable接口创建线程策略模式在Thread和Runnable中的应用Thread的构造方法start()源码为什么线程的启动不直接使用run()而必须使用start()呢?线程生命周期Thread常用API一个Java程序有哪些线原创 2020-11-23 19:28:44 · 5783 阅读 · 0 评论