Java ConditionObject 介绍(一)

前言 在介绍 AQS 时,其中有一个内部类叫做 ConditionObject,当时并没有进行介绍,并且在后续阅读源码时,会发现很多地方用到了 Condition ,这时就会很诧异,这个 Condition 到底有什么作用?那今天就通过阅读 Condition 源码,从而弄清楚 Condition 到底是做什么的?当然阅读这篇文章的时候希望你已经阅读了…

hello hello 发布于 2024-11-16

Java ConditionObject 介绍(二)

fullyRelease 方法 (AQS) final int fullyRelease(Node node) { boolean failed = true; try { // 获取当前节点的 state int savedState = getState(); // 释放锁 if (release(savedState)) { failed =…

hello hello 发布于 2024-11-16

Java AQS 介绍(二)

/** * 根据上一个节点的状态,判断当前线程是否应该被阻塞 * SIGNAL -1 :当前节点释放或者取消时,必须 unpark 他的后续节点。 * CANCELLED 1 :由于超时(timeout)或中断(interrupt),该节点被取消。节点永远不会离开此状态。特别是,具有取消节点的线程永远不会再次阻塞。 * CONDITION -2…

hello hello 发布于 2024-11-13

Java AQS 介绍(一)

前言 AbstractQueuedSynchronizer 抽象队列同步器,简称 AQS 。是在 JUC 包下面一个非常重要的基础组件,JUC 包下面的并发锁 ReentrantLock CountDownLatch 等都是基于 AQS 实现的。所以想进一步研究锁的底层原理,非常有必要先了解 AQS 的原理。…

hello hello 发布于 2024-11-13

一次彻底讲清如何处理mysql 的死锁问题

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导致所有事务都无法继续执行的现象。在 InnoDB 存储引擎中,死锁是通过锁机制产生的,特别是在并发较高、业务逻辑复杂的情况下,更容易发生死锁。 一、MySQL 死锁的成因 MySQL 的死锁一般发生在 行级锁 上。常见的死锁成因包括: 事务 A 和事务 B 持有互相需要的锁 :事务 A…

hello hello 发布于 2024-11-13

一文彻底弄懂mysql的事务日志,undo log 和 redo log

在数据库事务管理中, Undo Log 和 Redo Log 是两种关键日志,用于保障事务的 原子性 和 持久性 。它们的作用是确保数据库在出现崩溃、断电、宕机等故障时,能够进行恢复操作,从而保障数据一致性和完整性。它们通常用于支持事务的 ACID 特性中的 原子性 和 持久性 。下面将分别介绍 Undo Log 和 Redo Log…

hello hello 发布于 2024-11-13

一文彻底弄懂MySQL的MVCC多版本控制器

InnoDB 的 MVCC(Multi-Version Concurrency Control,多版本并发控制) 是 MySQL 实现高并发事务处理的一种机制。通过 MVCC,InnoDB 可以在高并发环境下支持 事务隔离 ,并提供 非阻塞的读操作 ,从而避免锁定所有读操作带来的性能瓶颈。MVCC 允许事务在不加锁的情况下读取数据,保证了性能和一致性。…

hello hello 发布于 2024-11-13

一文彻底弄清Redis的布隆过滤器

布隆过滤器(Bloom Filter)是一种空间效率极高的数据结构,用于快速判断一个元素是否在集合中。它能够节省大量内存,但它有一个特点:可能存在误判,即可能会认为某个元素存在于集合中,但实际上不存在;而对于不存在的元素,它保证一定不会误判。布隆过滤器适合在对存储空间要求极为严格,同时能接受少量误判的应用场景中使用。 1. 布隆过滤器的工作原理…

hello hello 发布于 2024-11-13

Java DelayQueue 介绍(一)

DelayQueue 是 JUC 包( java.util.concurrent) 为我们提供的延迟队列,用于实现延时任务比如订单下单 15 分钟未支付直接取消。它是 BlockingQueue 的一种,底层是一个基于 PriorityQueue 实现的一个无界队列,是线程安全的。 DelayQueue 中存放的元素必须实现 Delayed…

hello hello 发布于 2024-11-13

Java DelayQueue 介绍(二)

DelayQueue 源码解析 这里以 JDK1.8 为例,分析一下 DelayQueue 的底层核心源码。 DelayQueue 的类定义如下: public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E> { //... }…

hello hello 发布于 2024-11-13
上一页 下一页