摘要: 通过上一篇【RabbitMQ 笔记】— 基本概念,知道生产者和消费者使用到的主要类和接口有 ConnectionFactory、Connection、Channel、Consumer 等。Connection 是用来开启 Channel 的,RabbitMQ 开发工作也基本上是围绕 Connecti 阅读全文
posted @ 2022-06-09 13:25 Tailife 阅读(97) 评论(0) 推荐(0) 编辑
摘要: RabbitMQ 整体上是一个生产者消费者模型,主要负责接收、存储和转发消息。整体模型架构图如下: 生产者和消费者 生产者 Producer:生产者,就是投递消息的一方。生产者创建消息,然后发布到 RabbitMQ 中。 消息一般可以分为两部分: 消息体(payload):带有业务逻辑结构的数据,比 阅读全文
posted @ 2022-06-09 13:13 Tailife 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 构造方法 创建线程池的方法如下: ExecutorService executor = Executors.newFixedThreadPool(8); 但是 《阿里 Java 开发手册》中禁止使用Executors工具类的方式创建线程池,而是推荐使用ThreadPoolExecutor的构造方法直 阅读全文
posted @ 2022-06-08 18:40 Tailife 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 作用 线程池主要有以下好处 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监 阅读全文
posted @ 2022-06-08 18:39 Tailife 阅读(37) 评论(0) 推荐(0) 编辑
摘要: Queue 阻塞队列(BlockingQueue)继承自 Queue,先看看 Queue 定义了哪些接口 /** * Queue 相对于 Collection 中基本的方法,提供了另外的插入,移除和检查方法。 * 每个方法都有两种形式:如果操作失败,一种是直接抛异常,另一种是返回特殊值(null 或 阅读全文
posted @ 2022-06-08 18:36 Tailife 阅读(29) 评论(0) 推荐(0) 编辑
摘要: Condition 接口 在线程基础一文中说道,Java 中任何一个对象都拥有一组监视器方法(定义在 java.lang.Object 上),主要包括 wait()、wait(long timeout)、notify() 以及 notifyAll() 方法。而且这些方法使用时有个前提,就是必须先获得 阅读全文
posted @ 2022-06-08 18:34 Tailife 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 介绍 源码中是这么说的 Basic thread blocking primitives for creating locks and other synchronization classes. LockSupport 是创建锁和其他同步组件中阻塞线程的基本原语 比如在 AQS 中的 FIFO 队 阅读全文
posted @ 2022-06-08 18:32 Tailife 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 可重入性 概念 在说 ReentrantLock 之前,先了解下什么是可重入。假如有如下代码 private synchronized static void testA() { testB(); } private synchronized static void testB() { // do 阅读全文
posted @ 2022-06-08 18:30 Tailife 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 在【Java 并发编程】——AQS 源码探索之独占式一文中从源码详细介绍了 AQS 独占式的实现方式。本文将介绍 AQS 的共享式,顾名思义,共享式就是允许多个线程同时访问同一个资源。 共享式实例 在独占式中,AQS 中的状态用来表示可获取或者已独占(比如 0 表示可获取,1 表示已被占用)。共享式 阅读全文
posted @ 2022-06-08 18:25 Tailife 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 上篇通过 AQS 简单地实现了一个独占锁,锁最主要的方法就是 lock() 和 unlock(),那我们就从 lock 走起 public void lock() { sync.acquire(1); } 获取(不响应中断) 自定义组件中独占式获取便是调用同步器的模板方法 acquire(int a 阅读全文
posted @ 2022-06-08 18:23 Tailife 阅读(53) 评论(0) 推荐(0) 编辑