摘要:
一、RocketMQ源码包模块概览 rocketmq源码包各模块内容如下: 1、命名服务模块 - namesrv namesrv被称为命名服务,主要用于Topic路由信息存储;管理broker节点(路由注册、路由删除)。 2、服务端模块 - broker 接收MQ客户端(生产者、消费者)的请求,调用 阅读全文
摘要:
1、LinkedBlockingQueue使用 LinkedBlockingQueue的使用案例详情如下: 1 import java.util.concurrent.LinkedBlockingDeque; 2 import java.util.concurrent.LinkedBlockingQ 阅读全文
摘要:
一、源码地址下载 RocketMQ官网下载地址:https://github.com/apache/rocketmq/tags。 当前搭建的是4.8.0版本的rocketmq,下载zip压缩包至本地,并解压。 当解压后的RocketMQ源码导入IDEA。 二、源码环境搭建 1、启动NameServe 阅读全文
摘要:
ReentrantLock是互斥锁,若存在读多写少同时保证线程安全的场景,ReentrantLock效率比较低,此时需要用到ReentrantReadWriteLock。 一、ReentrantReadWriteLock介绍 ReentrantReadWriteLock是可重入的读写锁,实现了Rea 阅读全文
摘要:
一、ReentrantLock介绍 ReentrantLock是JDK1.5引入的,实现Lock接口的互斥锁。保证多线程的环境下,共享资源的原子性。与Synchronized的非公平锁不同,ReentrantLock的实现公平锁、非公平锁。ReentrantLock是重入锁,重入是指,同一个线程可以 阅读全文
摘要:
在分布式系统中,肯定避免不了获取全局唯一ID,用于业务主键,本节主要学习分布式ID常用的生成方法。 一、UUID UUID (Universally Unique Identifier),通用唯一识别码。UUID是基于当前时间、计数器(counter)和硬件标识(通常为无线网卡的MAC地址)等数据计 阅读全文
摘要:
1、CyclicBarrier的介绍 CyclicBarrier 被称为栅栏,允许一组线程相互等待,直到这一组线程都准备完毕,放行,程序方可继续执行。 就好像做摩天轮,游乐园规定,至少有9个游客乘坐摩天轮,管理员才可以启动摩天轮,游客数和管理员少一个条件,摩天轮都不会启动。 2、CyclicBarr 阅读全文
摘要:
ConditionObject是AbstractQueuedSynchronizer(AQS)实现的内部类,类图如下: 1、Condition接口 ConditionObject实现了Condition接口。先来看看Codition接口。 Codition中主要定义了挂起线程和唤醒线程的接口方法。C 阅读全文
摘要:
一、协程的创建 Go 语言支持并发,只需要通过 go 关键字来开启 goroutine(协程) 即可。 goroutine(协程) 是轻量级线程,goroutine(协程) 的调度是由 Golang 运行时进行管理的。 goroutine 语法格式(创建协程): go 函数名( 参数列表 ) 示例代 阅读全文
摘要:
1、通道 通道channel是Go提供的一种用于各个协程(goroutine)之间的数据共享,保证数据同步交换的机制。协程是轻量级线程,类似于Java中的线程。 2、通道的类型 2.1、无缓冲通道 用于同步通信,可保证在发送和接收数据时完成两个goroutine(协程)的数据交换。 2.2、缓冲通道 阅读全文