摘要: 《Scalable IO in Java》 是java.util.concurrent包的作者,大师Doug Lea关于分析与构建可伸缩的高性能IO服务的一篇经典文章,在文章中Doug Lea通过各个角度,循序渐进的梳理了服务开发中的相关问题,以及在解决问题的过程中服务模型的演变与进化,文章中基于R 阅读全文
posted @ 2019-07-28 15:11 DJ-LINK 阅读(10018) 评论(3) 推荐(5)
摘要: Semaphore信号量通常做为控制线程并发个数的工具来使用,它可以用来限制同时并发访问资源的线程个数。 一、Semaphore使用 下面我们通过一个简单的例子来看下Semaphore的具体使用,我们同时执行10个计数线程,并定义一个Semaphore变量用来控制并发值,同一时间只允许两个线程并发执 阅读全文
posted @ 2019-07-06 18:06 DJ-LINK 阅读(999) 评论(0) 推荐(0)
摘要: 一、CyclicBarrier使用 CyclicBarrier从字面上可以直接理解为线程运行的屏障,它可以让一组线程执行到一个共同的屏障点时被阻塞,直到最后一个线程执行到指定位置,你设置的执行线程就会触发运行;同时CyclicBarrier相比与CountDownLatch,它是可以被重置的;下面我 阅读全文
posted @ 2019-06-30 18:27 DJ-LINK 阅读(413) 评论(0) 推荐(0)
摘要: 在过去我们实现多线程同步的代码中,往往使用join()、wait()、notiyAll()等线程间通信的方式,随着JUC包的不断的完善,java为我们提供了丰富同步工具类,官方也鼓励我们使用工具类来实现多线程的同步,今天我们就对其中CountDownLatch类的使用与底层实现进行分析与总结。 一、 阅读全文
posted @ 2019-06-28 20:56 DJ-LINK 阅读(818) 评论(0) 推荐(0)
摘要: 前面两篇文章Netty源码分析之NioEventLoop(一)—NioEventLoop的创建与Netty源码分析之NioEventLoop(二)—NioEventLoop的启动中我们对NioEventLoop的创建与启动做了具体的分析,本篇文章中我们会对NioEventLoop的具体执行内容进行分 阅读全文
posted @ 2019-06-11 22:04 DJ-LINK 阅读(1056) 评论(0) 推荐(2)
摘要: 前面我们在java线程池ThreadPoolExecutor类使用详解中对ThreadPoolExector线程池类的使用进行了详细阐述,这篇文章我们对其具体的源码进行一下分析和总结; 首先我们看下ThreadPoolExecutor用来表示线程池状态的核心变量 ThreadPoolExecutor 阅读全文
posted @ 2019-05-29 21:34 DJ-LINK 阅读(606) 评论(0) 推荐(0)
摘要: 在SpringBoot框架中,注解做为一种隐式配置,极大的简化了之前xml文件的配置方式。SpringBoot中包含许多种类的注解,这里对在SpingBoot项目中经常使用到的一些注解的进行大致的归纳总结; 一、启动相关 1、@SpringBootApplication 在SpirngBoot启动类 阅读全文
posted @ 2019-05-16 18:52 DJ-LINK 阅读(633) 评论(0) 推荐(0)
摘要: 上篇文章中我们对Netty中NioEventLoop创建流程与源码进行了跟踪分析。本篇文章中我们接着分析NioEventLoop的启动流程; Netty中会在服务端启动和新连接接入时通过chooser选择器,分别为NioServerSocketChannel与NioSocketChannel选择绑定 阅读全文
posted @ 2019-03-23 15:13 DJ-LINK 阅读(1125) 评论(0) 推荐(2)
摘要: 一、NioEventLoop的概述 NioEventLoop做为Netty线程模型的核心部分,从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个for(;;)循环来处理与 Channel 相关的 IO 操作, 包括 调用 select 等待就绪的 IO 事件、 阅读全文
posted @ 2019-03-10 22:44 DJ-LINK 阅读(3498) 评论(0) 推荐(1)
摘要: 一、基本介绍 ArrayBlcokingQueue,LinkedBlockingQueue是jdk中内置的阻塞队列,网上对它们的分析已经很多,主要有以下几点: 1、底层实现机制不同,ArrayBlcokingQueue是基于数组的,LinkedBlockingQueue是基于链表的; 2、初始化方式 阅读全文
posted @ 2019-02-03 19:00 DJ-LINK 阅读(3475) 评论(1) 推荐(0)