Netty源码分析之NioEventLoop(一)—NioEventLoop的创建

一、NioEventLoop的概述 NioEventLoop做为Netty线程模型的核心部分,从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个for(;;)循环来处理与 Channel 相关的 IO 操作, 包括 调用 select 等待就绪的 IO 事件、读写数据与数据的处理等;其次作为任务队列, 执行 taskQueue 中的任务, 例如eventLoop.s...

Netty源码分析之NioEventLoop(三)—NioEventLoop的执行

前面两篇文章Netty源码分析之NioEventLoop(一)—NioEventLoop的创建与Netty源码分析之NioEventLoop(二)—NioEventLoop的启动中我们对NioEventLoop的创建与启动做了具体的分析,本篇文章中我们会对NioEventLoop的具体执行内容进行分析; 从之前的代码中我们可以知道NioEventLoop的执行都是在run()方法的for循环中完成的 @O...

聊聊ReentrantLock的内部实现

大家都用过ReentrantLock,但是大家对内部实现是否足够了解呢,下面我就简单说一下其中的实现原理。 ReentrantLock是可重入锁,也就是同一个线程可以多次获取锁,每获取一次就会进行一次计数,解锁的时候就会递减这个计数,直到计数变为0。 它有两种实现,一种是公平锁,一种是非公平锁,那么默认是什么锁呢?看完如下代码想必你也知道了。 /** * Creates an instan...

ReentrantLock之非公平锁源码分析

本文分析的ReentrantLock所对应的Java版本为JDK8。 在阅读本文前,读者应该知道什么是CAS、自旋。 由于ReentrantLock的公平锁和非公平锁中有许多共同代码,本文只会对这两种锁的不同之处加以分析,所以如果读者对公平锁不熟的话,强烈建议先看我的上篇博客——ReentrantLock之公平锁源码分析。 本文大纲 1.ReentrantLock非公平锁简介2.loc...

Netty源码分析(四):EventLoopGroup

类结构 NioEventLoopGroup继承自MultithreadEventLoopGroup,多提供了两个方法setIoRatio和rebuildSelectors,一个用于设置NioEventLoop用于IO处理的时间占比,另一个是重新构建Selectors,来处理epoll空轮询导致CPU100%的bug。这个两个的用处在介绍NioEventLoop的时候在详细介绍。其它的方法都在接口中有定义...

死磕 java同步系列之ReentrantLock VS synchronized——结果可能跟你想的不一样

问题(1)ReentrantLock有哪些优点?(2)ReentrantLock有哪些缺点?(3)ReentrantLock是否可以完全替代synchronized?简介synchronized是Java原生提供的用于在多线程环境中保证同步的关键字,底层是通过修改对象头中的MarkWord来实现的。ReentrantLock是Java语言层面提供的用于在多线程环境中保证同步的类,底层是通过原子...
关于我们 联系我们 友情链接 LMLPHP后院 
本站由 LMLPHP 强力驱动 ©2014-2019 LMLPHP 耗时0.024413(s)
2019-08-21 20:15:06 1566389706