JAVA
文章平均质量分 85
ybin__
这个作者很懒,什么都没留下…
展开
-
java的CAS
cas是compare and swap的缩写,是由操作系统提供的并发操作的原子指令;cas操作包含3个基本值,内存地址,预期值,要更新的值。在更新变量值时,cas会首先将变量内存地址上的原值和预期值相比较,如果相当就将其设置为要更新的值。cas就是乐观锁的一种形式。 Volatile能保证共享变量的可见性,即线程将共享变量从主内存读取到线程自己的工作内存中修改后,立即同步到主内存中...原创 2018-03-22 23:28:38 · 203 阅读 · 0 评论 -
ReentrantLock源码分析及实现原理
ReentrantLock可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义。但功能更强大,更灵活,可减少死锁发生的概率。ReentrantLock由最近成功获取锁且未释放锁的线程拥有。 ReentrantLock提供了公平锁与非公平锁的选择,当构造方法接收一个可选的公平参数且该值为true时,ReentrantLock表示的实...原创 2018-03-31 23:53:23 · 311 阅读 · 0 评论 -
JAVA运行时数据区域
JVM运行时数据区图示:根据《Java虚拟机规范(JavaSE 7)》的规范,JVM所管理的内存包含如下几个运行时数据区域:各区域介绍:堆结构: 堆被划分为新生代和老年代。新生代又被细分为eden和from survivor和to survivor,参数-XX:SurvivorRatio是新生代各分区的划分比值,默认为8.代表:eden:survivor=8:1。 大多数情况下,对象都是在...原创 2018-05-15 23:37:35 · 274 阅读 · 0 评论 -
AVL树旋转及代码实现
AVL树是带有平衡条件的二叉查找树,它允许每个节点的左子树与右子树的高度差未1。这样的平衡树深度是O(log N)。而要维持这种平衡,就必须在每次对AVL树删除节点或新增节点后,检查AVL树的平衡是否被打破,即是否存在节点的左右子树高度差大于1,在判断AVL树失去平衡后,就必须旋转失去平衡的节点,已再次达到平衡。AVL树旋转: 旋转的目的就是减小树的高度,节点未空时,节点的高度未-1...原创 2018-06-13 22:50:19 · 805 阅读 · 0 评论 -
Netty源码解析-NioEventLoop初始化
作为Netty的核心组件之一,NioEventLoop负责处理netty中的各种事件,每个NioEventLoop上有一个selector负责轮询IO事件,有一个定时任务队列及普通任务队列负责处理注册到NioEventLoop上的非IO任务。而1组NioEventLoop右由一个NioEventLoopGroup负责管理,默认一个NioEventLoopGroup管理2倍CPU核数的Nio...原创 2018-07-11 22:44:39 · 264 阅读 · 0 评论 -
Netty源码解析-ServerBootstrap及初始化服务端启动
在https://blog.csdn.net/ybin__/article/details/81007018 中分析了NioEventGroupLoop的初始化,这一章主要ServerBootstrap的初始化,及Netty服务端的启动。 ServerBootstrap的UML图: ServerBootstrap继承至AbstractBootstrap,ServerBootSt...原创 2018-09-22 11:53:11 · 870 阅读 · 0 评论