首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
juc
订阅
小q52194
更多收藏集
微信扫码分享
微信
新浪微博
QQ
31篇文章 · 0订阅
JVM源码分析之Object.wait/notify实现
“365篇原创计划”第十一篇。 最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为java中所有对象的基类,其存在的价值不言而喻,其中wait和notify方法的实现多线程协作提供了保证。 前提:由同一个lock对象调用wait、no…
synchronized原理-JVM源码
在HotSpot虚拟机中,monitor是由ObjectMonitor实现的。其源码是用c++来实现的。 当多个线程执行到同步代码块时就会产生竞争,synchronized会执行monitorenter指令,最终会调用C++的ObjectMonitor::enter方法。 1.…
Java线程生命周期与状态切换
最近有点懒散,没什么比较有深度的产出。刚好想重新研读一下JUC线程池的源码实现,在此之前先深入了解一下Java中的线程实现,包括线程的生命周期、状态切换以及线程的上下文切换等等。编写本文的时候,使用的JDK版本是11。 在JDK1.2之后,Java线程模型已经确定了基于操作系统…
ThreadLocal源码分析-黄金分割数的使用
最近接触到的一个项目要兼容新老系统,最终采用了ThreadLocal(实际上用的是InheritableThreadLocal)用于在子线程获取父线程中共享的变量。问题是解决了,但是后来发现对ThreadLocal的理解不够深入,于是顺便把它的源码阅读理解了一遍。在谈到Thre…
通过transmittable-thread-local源码理解线程池线程本地变量传递的原理
最近一两个月花了很大的功夫做UCloud服务和中间件迁移到阿里云的工作,没什么空闲时间撸文。想起很早之前写过ThreadLocal的源码分析相关文章,里面提到了ThreadLocal存在一个不能向预先创建的线程中进行变量传递的局限性,刚好有一位HSBC的技术大牛前同事提到了团队…
硬核干货:5W字17张高清图理解同步器框架AbstractQueuedSynchronizer
并发编程大师Doug Lea在编写JUC(java.util.concurrent)包的时候引入了java.util.concurrent.locks.AbstractQueuedSynchronizer,其实是Abstract Queued Synchronizer,也就是"…
硬核干货:4W字从源码上分析JUC线程池ThreadPoolExecutor的实现原理
很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章。之前在分析扩展线程池实现可回调的Future时候曾经提到并发大师Doug Lea在设计线程池ThreadPoolExecutor的提交任务的顶层…
深入理解Object提供的阻塞和唤醒API
前段时间花了大量时间去研读JUC中同步器AbstractQueuedSynchronizer的源码实现,再结合很久之前看过的一篇关于Object提供的等待和唤醒机制的JVM实现,发现两者有不少的关联,于是决定重新研读一下Object中提供的阻塞和唤醒方法。本文阅读JDK类库源码…
并发编程之 CountDown 源码分析
Doug Lea 大神在 JUC 包中为我们准备了大量的多线程工具,其中包括 CountDownLatch ,名为倒计时门栓,好像不太好理解。不过,今天的文章之后,我们就彻底理解了。 上面的代码中,我们创建了 1 个 CountDowmLatch 对象,在主线程和另外 10 个…
Java 经典面试题:聊一聊 JUC 下的 LinkedBlockingQueue
LinkedBlockingQueue 队列的读写方法非常的多,但是常用的是 put()、take()方法,因为它们两是阻塞的,所以我们就从源码的角度来聊一聊 LinkedBlockingQueue 队列中这两个方法的实现。