随笔分类 -  多线程与高并发

关于多线程、高并发的一些理论知识
摘要:多线程与高并发(五)—— 源码解析 ReentrantLock一、前言 ReentrantLock 是基于 AQS 实现的同步框架,关于 AQS 的源码在 这篇文章 已经讲解过,ReentrantLock 的主要实现都依赖AQS,因此在阅读本文前应该先了解 AQS 机制。本文并不关注 ReentrantLock 如何使用,只叙述其具体实现。 二、Reentra 阅读全文
posted @ 2022-08-10 17:48 onAcorner 阅读(619) 评论(1) 推荐(2)
摘要:前言 我们首先介绍中断的三个 APPI 及其底层代码,在对方法的实现有了清晰的认知后,再结合场景谈谈什么是中断,以及中断该如何正确使用? 一、中断方法 1. isInterrupted public boolean isInterrupted() { // 调用isInterrupted 方法,中断 阅读全文
posted @ 2022-08-02 10:58 onAcorner 阅读(141) 评论(0) 推荐(0)
摘要:多线程与高并发(三)—— 源码解析 AQS 原理一、前言 AQS 是一个同步框架,关于同步在操作系统(一)—— 进程同步 中对进程同步做了些概念性的介绍,我们了解到进程(线程同理,本文基于 JVM 讲解,故下文只称线程)同步的工具有很多:Mutex、Semaphore、Monitor。但是Mutex 和 Semaphore 作为低级通信存在不少缺 阅读全文
posted @ 2022-07-28 09:41 onAcorner 阅读(734) 评论(1) 推荐(1)
摘要:多线程与高并发(二)—— Synchronized 加锁解锁流程前言 上篇主要对 Synchronized 的锁实现原理 Monitor 机制进行了介绍,由于 Monitor 基于操作系统调用,上下文切换导致开销大,在竞争不激烈时性能不算很好, 在 jdk6 之后进了系列优化。前文对优化措施进行了简单介绍,下面将一一介绍这些优化的细节,行文思路大致如下: 从重量 阅读全文
posted @ 2022-07-20 11:26 onAcorner 阅读(954) 评论(0) 推荐(1)
摘要:多线程与高并发(一)—— 自顶向下理解Synchronized实现原理一、 什么是锁? 在多线程中,多个线程同时对某一个资源进行访问,容易出现数据不一致问题,为保证并发安全,通常会采取线程互斥的手段对线程进行访问限制,这个互斥的手段就可以称为锁。锁的本质是状态+指针,当一个线程进入临界区前需要先修改状态,表明已加锁,并且指针指向加锁的线程。后续线程在进入临界区时同样需 阅读全文
posted @ 2022-07-15 17:16 onAcorner 阅读(207) 评论(1) 推荐(0)