摘要: 存储机制 不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。持久化的消息在到达队列时就被写入到磁盘,并且如果可以,持久化的消息也会在内存中保存一份备份,这样可以提高一定的性能,当内存吃紧的时候会从内存中清除。非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。这 阅读全文
posted @ 2020-12-18 19:59 天上的白云贼白了 阅读(745) 评论(0) 推荐(0) 编辑
摘要: 集群 RabbitMQ 集群允许消费者和生产者在 RabbitMQ 单个节点崩溃的情况下继续运行,它可以通过添加更多的节点来线性地扩展消息通信的吞吐量。当失去一个 RabbitMQ 节点时,客户端能够重新连接到集群中的任何其他节点并继续生产或者消费。 不过 RabbitMQ 集群不能保证消息的万无一 阅读全文
posted @ 2020-12-13 18:33 天上的白云贼白了 阅读(770) 评论(0) 推荐(0) 编辑
摘要: 线程模型介绍 不同的线程模式,对程序的性能有很大影响,为了搞清 Netty 线程模式,下面来系统的讲解下各个线程模式, 最后看看 Netty 线程模型有什么优越性。 目前存在的线程模型有: 传统阻塞 I/O 服务模型 Reactor 模式 根据 Reactor 的数量和处理资源池线程的数量不同,有 阅读全文
posted @ 2020-12-13 18:27 天上的白云贼白了 阅读(680) 评论(0) 推荐(1) 编辑
摘要: 前置概念 用户空间与内核空间 CPU 将指令分为特权指令和非特权指令,对于危险指令,只允许操作系统及其相关模块使用,普通应用程序只能使用那些不会造成灾难的指令。比如 Intel 的 CPU 将特权等级分为 4 个级别:Ring0~Ring3。 其实 Linux 系统只使用了 Ring0 和 Ring 阅读全文
posted @ 2020-12-06 00:13 天上的白云贼白了 阅读(1881) 评论(1) 推荐(1) 编辑
摘要: 概述 Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的。 NIO 三大核心部分:Channel(通道),Buffer(缓冲区) 阅读全文
posted @ 2020-12-06 00:11 天上的白云贼白了 阅读(424) 评论(0) 推荐(0) 编辑
摘要: I/O 模型 BIO BIO 就是传统的java.io包,同步并阻塞,基于流模型实现,在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞。 优点是代码比较简单、直观 缺点是效率和扩展性很低,容易成为应用性能瓶颈 NIO NIO 是Java 1.4引入的java.nio包,同步非阻塞,提供了 阅读全文
posted @ 2020-12-06 00:07 天上的白云贼白了 阅读(113) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch CountDownLatch 适用于需要在主线程中开启多个线程去并行执行任务并且主线程需要等待所有子线程执行完后再进行汇总的场景。 使用示例 实例代码如下: public class JoinCountDownLatch { // 创建一个CountDownLatch 阅读全文
posted @ 2020-11-29 18:06 天上的白云贼白了 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 线程池 线程池主要解决以下两个问题: 当执行大量异步任务时线程池能够提供较好的性能。线程是可复用的,减少创建和销毁开销。 线程池也提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。 线程池状态含义如下: RUNNING:接受新任务并处理阻塞队列里的任务 SHUTDOWN:拒绝新 阅读全文
posted @ 2020-11-22 22:55 天上的白云贼白了 阅读(139) 评论(0) 推荐(0) 编辑
摘要: ConcurrentLinkedQueue ConcurrentLinkedQueue 线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,对于入队和出队操作使用 CAS 来实现线程安全。 类图 ConcurrentLinkedQueue 内部的队列使用单向链表的方式实现,其中有两个volat 阅读全文
posted @ 2020-11-21 23:59 天上的白云贼白了 阅读(112) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock ReentrantLock 是可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而被放入该锁的AQS 阻塞队列里。 类图 ReentrantLock 类图如下: 从类图可以看到, ReentrantLock 最终还是使用AQS来实现的,并且根据参数 阅读全文
posted @ 2020-11-15 23:04 天上的白云贼白了 阅读(133) 评论(0) 推荐(0) 编辑