并发系列之CAS原理
发表于
并发系列之CAS原理CASCAS的全称是Compare And Swap 即比较交换,其算法核心思想如下$$执行函数:CAS(V,E,N)
.V表示要更新的变量.E表示预期值.N表示新值$$
看一个CAS的例子
12345678910111213141516171819202122232425262
...
RocketMQ-producer启动
发表于
RocketMQ-producer启动启动流程图
先上一张producer的启动流程图,上面清晰的标注着不同的模块,后面的源码解析就围绕这几个模块来展开。
源码解析Producer.java1234567891011121314151617181920212223242526272829public
...
NIO之Channel、Buffer、Selector
发表于
NIO之Channel、Buffer、Selector通道ChannelChannel是一个通道,它就像自来水管一样,网络数据通过Channel读取和写入。通道与流的不同之处在于通道是双向的,流只是在一个方向上移动(一个流必须是InputStream或者OutputStream的子类),而通道可以用
...
Netty系列之服务端启动流程
发表于
Netty系列之服务端启动流程服务端启动Demo1234567891011121314151617181920212223242526272829303132333435public class NettyServer { public static void main(String
...
并发系列之同步工具类
发表于
并发系列之同步工具类简要同步工具类可以是任何一个对象,只要它根据自身的状态来协调线程的控制流。同步工具类包括阻塞队列:阻塞队列、闭锁(Latch)、信号量(Semaphore)以及栅栏(Barrier)。阻塞队列前两篇博客以及介绍过了,本篇博文就是介绍后三种同步工具类。
闭锁闭锁可以延迟线程的进度知
...
RocketMQ-安装部署教程
发表于
RocketMQ-安装部署教程前期准备环境准备Java8安装
Linux系统
安装包rocketmq-4.2.0.zip
安装解压缩zip安装包到指定文件夹
1unzip rocketmq-all-4.2.0-bin-release.zip -d rocketmq-4,2,0
部署参考mq官方qui
...
JDK8下的BlockingQueue源码解析
发表于
JDK8下的BlockingQueue源码解析简要BlockingQueue是一个阻塞队列,阻塞队列能够阻塞当前试图从队列中获取元素的线程,而非阻塞队列不会。因此在面对类似生产者-消费者的模型时,使用非阻塞队列就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一
...
并发系列之生产者消费者模式
发表于
并发系列之生产者消费者模式简要生产者消费者模式是一个经典的多线程设计模式,它为多线程间的协作提供了良好了解决方案。一般这种设计模式都是基于阻塞队列的,当数据生成时,生产者把数据放入队列,而当消费者准备处理数据时,将从队列中获取数据。
例子以两个人洗盘子为例,二者的劳动分工也是一种生产者—消费者模式:
...