首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
彤哥读源码
掘友等级
后台开发工程师
|
保密
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
105
文章 105
沸点 0
赞
105
返回
|
搜索文章
最新
热门
死磕 java同步系列之CountDownLatch源码解析
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 CountDownLatch,可以翻译为倒计时器,但是似乎不太准确,它的含义是允许一个或多个线程等待其它线程的操作执行完毕后再执行后续的操作。 CountDownLatch的通常用法和Th…
死磕 java同步系列之Semaphore源码解析
Semaphore,信号量,它保存了一系列的许可(permits),每次调用acquire()都将消耗一个许可,每次调用release()都将归还一个许可。 Semaphore通常用于限制同一时间对共享资源的访问次数上,也就是常说的限流。 下面我们一起来学习Java中Semap…
死磕 java同步系列之ReentrantReadWriteLock源码解析
读写锁是一种特殊的锁,它把对共享资源的访问分为读访问和写访问,多个线程可以同时对共享资源进行读访问,但是同一时间只能有一个线程对共享资源进行写访问,使用读写锁可以极大地提高并发量。 可以看到,读写锁除了读读不互斥,读写、写读、写写都是互斥的。 在看源码之前,我们还是先来看一下R…
死磕 java同步系列之ReentrantLock VS synchronized——结果可能跟你想的不一样
synchronized是Java原生提供的用于在多线程环境中保证同步的关键字,底层是通过修改对象头中的MarkWord来实现的。 ReentrantLock是Java语言层面提供的用于在多线程环境中保证同步的类,底层是通过原子更新状态变量state来实现的。 我猜测应该是Re…
死磕 java同步系列之ReentrantLock源码解析(二)——条件锁
条件锁,是指在获取锁之后发现当前业务场景自己无法处理,而需要等待某个条件的出现才可以继续处理时使用的一种锁。 比如,在阻塞队列中,当队列中没有元素的时候是无法弹出一个元素的,这时候就需要阻塞在条件notEmpty上,等待其它线程往里面放入一个元素后,唤醒这个条件notEmpty…
死磕 java同步系列之ReentrantLock源码解析(一)——公平锁、非公平锁
Reentrant = Re + entrant,Re是重复、又、再的意思,entrant是enter的名词或者形容词形式,翻译为进入者或者可进入的,所以Reentrant翻译为可重复进入的、可再次进入的,因此ReentrantLock翻译为重入锁或者再入锁。 重入锁,是指一个…
死磕 java同步系列之AQS起篇
AQS的全称是AbstractQueuedSynchronizer,它的定位是为Java中几乎所有的锁和同步器提供一个基础框架。 AQS是基于FIFO的队列实现的,并且内部维护了一个状态变量state,通过原子更新这个状态变量state即可以实现加锁解锁操作。 本章及后续章节的…
死磕 java同步系列之自己动手写一个锁Lock
本篇文章的目标一是自己动手写一个锁,这个锁的功能很简单,能进行正常的加锁、解锁操作。 本篇文章的目标二是通过自己动手写一个锁,能更好地理解后面章节将要学习的AQS及各种同步器实现的原理。 首先,在上一章学习synchronized的时候我们说过它的实现原理是更改对象头中的Mar…
死磕 java同步系列之synchronized解析
synchronized关键字是Java里面最基本的同步手段,它经过编译之后,会在同步块的前后分别生成 monitorenter 和 monitorexit 字节码指令,这两个字节码指令都需要一个引用类型的参数来指明要锁定和解锁的对象。 在学习Java内存模型的时候,我们介绍过…
死磕 java同步系列之volatile解析
volatile可以说是Java虚拟机提供的最轻量级的同步机制了,但是它并不容易被正确地理解,以至于很多人不习惯使用它,遇到多线程问题一律使用synchronized或其它锁来解决。 了解volatile的语义对理解多线程的特性具有很重要的意义,所以彤哥专门写了一篇文章来解释v…
下一页
个人成就
优秀创作者
文章被点赞
1,195
文章被阅读
237,883
掘力值
7,518
关注了
0
关注者
2,943
收藏集
1
关注标签
158
加入于
2016-08-28