CountDownLatch2-学习

647 阅读1分钟

RocketMQ Runtime ServiceThread的设计理念: www.jianshu.com/p/2fb3293ed…

简介

CountDownLatch2是RocketMq实现的一个工具类,与CountDownLatch 逻辑一致;

增加了reset方法;

CountDown2用来做什么

配合RebalanceService类中使用,间隔20s进行负载均衡、停止ServiceThread、或立即停止阻塞
  • #await: RebalanceService#waitForRunning中使用,如果不调用#countDown,默认阻塞20s

  • #countdown调用

    • ServiceThread#stop,stop=true,ServiceThread停止工作
    • ServiceThread#shutdown,stop=true,ServiceThread停止工作
    • ServiceThread#weakup,停止20s的阻塞

问题

#reset是为了提供什么功能

重发使用同一个创建出来的CountDownLatch2,每次重置AQS的state即可;

ServiceThread是什么

在rocketmq中,订阅了某个topic,就相当于订阅了这个topic的所有消息队列,MessageQueue,而MessageQueue是可能动态变化的,消费者组内的消费者数量也可能动态变化。所以,就需要一个组件来完成这种消费队列在消费者间的重新平衡。这个组件就是RebalanceService。 原文链接:blog.csdn.net/yuxiuzhiai/…