JUC 高并发模块
文章平均质量分 76
高并发安全编程知识
神韵499
记录、创造与成就感也许是我写博客的一个原因。当然,转载也是我对知识存储的渴望,我对别人的知识点的赞同,这也是一个原因。但是,每天早上起来在自己博客里回味、每天早上在博客海洋里进步,每天在过去的知识里又学到了新的知识,有了新的认识。这才是我写博客最大的原因
展开
-
实现线程的三种方式KLT/ULT/LWP
大家好,我是神韵,是一个技术&生活博主。关于文章都是定位为基础,我不敢讲的太深入,因为我怕自己没时间。欢迎来点赞打卡,你们的行动将是我无限的动力。今日主题是:实现线程的三种方式KLT/LWP/ULT 三种线程的实现主要是内核线程(KLT)、用户线程(ULT)和用户线程加轻量级进程混合,其中轻量级进程又称LWP。1、内核线程实现 内核线程(Kernal-Level Thread)简称KLT,这种线程实现是指直接由操作系统内核来完成线程支持、线程切换和操纵调度器进行调度即线程映射到各个处.原创 2021-07-19 10:48:51 · 1501 阅读 · 5 评论 -
线程的调度之协同式和抢占式
大家好,我是神韵,是一个技术&生活博主。关于文章都是定位为基础,我不敢讲的太深入,因为我怕自己没时间。欢迎来点赞打卡,你们的行动将是我无限的动力。今日主题是:线程的调度之协同式和抢占式话不多说,下面进入今天主题 线程调度是指系统为线程分配处理器(CPU)使用权的过程。通俗点就是线程需要得到CPU的使用权才可以进行工作,而CPU使用权是系统给线程分配的,系统分配CPU使用权给相应线程这个过程就是线程调度。其调度方式主要分为两种:协同式线程调度 Cooperative Threads-S.原创 2021-07-26 22:53:00 · 1678 阅读 · 0 评论 -
ThreadPoolTaskExecutor的点滴记录
一、ThreadPoolTaskExecutor和ThreadPoolExecutor区别观点:感觉无大差别,差别可能是前者是Spring提供的类,后者是Jdk提供的类,前者封装对后者进行了在封装,多了额外功能(具体啥功能我也没研究..)。如两种实现线程池定义:ThreadPoolExecutor提供了四个构造函数,更方便创建二、ThreadPoolTaskExecutor讲解类继承关系图1、当ThreadPoolTaskExecutor当做Bean注入到Spring原创 2021-03-20 18:34:50 · 1420 阅读 · 0 评论 -
花几分钟看懂如何配置线程池的核心线程数
目录一、背景二、什么是CPU核数和逻辑处理器数三、CPU密集型和IO密集型四、线程池核心线程数确定五、代码实现-ThreadPoolTaskExecutor一、背景为了实现异步,需要将任务开新的线程去处理调三方接口等,从而不影响主线程的工作。而配置线程池可以方便线程的管理,减少线程创建、摧毁带来的性能消耗和提高响应速度等。这篇文章将简单介绍如何配置线程池。二、什么是CPU核数和逻辑处理器数ctrl+alt+delete打开任务管理器,打开性能,如下图我的机器配置,可.原创 2021-03-20 17:50:32 · 4313 阅读 · 4 评论 -
多线程基础三(重)
一、什么是进程、线程?进程:操作系统进行资源分配的最小单元线程:操作系统调度CPU的最小单元,线程都拥有各自的计数器、栈和局部变量等属性,并且还可以访问共享的内存变量。关系:一个进程可以创建多个线程二、CPU核心数和线程数的关系?假设内核2,逻辑处理器4能并行执行线程数,主要取决于逻辑处理器,4个逻辑处理器可以并行处理4个线程。但是可以并发处理几千个线程都没问题(...原创 2019-10-17 17:02:29 · 163 阅读 · 0 评论 -
ZK实现分布式锁原理
目录一、引入问题二、了解ZK三、ZK实现分布式锁过程四、图解ZK实现分布式锁过程文字有点多,也可以直接进入图解过程一、引入问题单进程jvm下,可以用java内置锁和显示锁来确保线程安全。但是在多jvm下时,如何保证线程安全呢,java层级已经解决不了这个问题。也就是说不同的jvm如何保证资源安全性?引出ZK解决分布式带来的资源同步问题二、了解ZK理解节点,...原创 2020-01-04 13:59:07 · 6229 阅读 · 6 评论 -
内置锁探索,结合对象头分析内置锁(亲测,研究一段时间总结)
Table of Contents一、对象头打印信息类二、对象头介绍三、对象头的参数说明四、无锁分析四、偏向锁五、轻量级锁六、重量级锁七、带上一张自画图--内置锁sync升级过程图阅读此博客前必读:代码大家自己动手敲,不要太懒哈。我都给截图,不给代码!此篇博客大多都是基于实战验证理论过程,重点在于偏向级锁实战等几个实战。一、对象头打印信息类导入Maven...原创 2019-10-24 23:16:32 · 890 阅读 · 13 评论 -
线程池超详细介绍
Table of Contents一、线程池的优势?二、四个构造方法三:线程池参数解释四、参数合理配置五、类层级关系六、创建线程池一个池并分析实例? 七、线程池的正确选择八、Java中的几种阻塞队列一、线程池的优势?重用存在的线程。减少线程创建、消亡的开销,提高性能 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行 提高线程...原创 2019-10-20 13:06:25 · 426 阅读 · 0 评论 -
sync为啥是重量级锁?
此篇文章写的比较杂乱,自己总结的一些碎片知识。jdk1.6及以前,synchronized关键字修饰方法是一个重量级锁的操作内置锁synchronized与显式锁Lock解释为什么jdk1.6以前synchronized是重量级锁,性能低下的原因?为啥是重量级锁?在这个版本之前,加锁的操作是涉及到操作系统进行互斥操作,就是会把当前线程挂起,然后操作系统进行互斥操作修改...原创 2019-10-20 10:27:00 · 2704 阅读 · 0 评论 -
ReentrantLock与AQS
知识简陋,掌握就好1、自旋自旋次数控制,是为了尽量在Java级别实现而不调用操作系统的api实现,也就是为了尽量不阻塞线程2、park unpark阻塞与唤醒3、CAS操作原子操作,安全,用于修改状态值state,AQS的队列头尾指针修改等4、ReentrantLock高级的回答如果是单个线程或交替执行,他其实和队列无关--jdk级别解决同步问题不用初始化队列效...原创 2019-09-12 09:52:54 · 205 阅读 · 0 评论 -
ReentrantLock源码分析全
目录图片分析过程源码分析一、t1线程拿锁源码分析过程二、t2线程拿锁失败进入队列阻塞源码分析过程三、t3线程拿锁失败进入队列阻塞源码分析过程四、t1释放锁源码分析过程五、t2线程被唤醒后拿锁源码分析过程六、t2线程释放锁源码分析过程七、t3线程被唤醒后拿到锁源码分析过程八、t3线程释放锁源码分析过程下面的源码分析将围绕三个线程的使用来介绍源码,先图...原创 2019-09-08 10:30:29 · 534 阅读 · 0 评论 -
AQS、ReentrantLock必知
首先我们来看看,如果用java并发包下的ReentrantLock来加锁和释放锁,是个什么样的感觉?这个基本学过java的同学应该都会吧,毕竟这个是java并发基本API的使用,应该每个人都是学过的,所以我们直接看一下代码就好了:上面那段代码应该不难理解...转载 2019-06-17 08:17:33 · 162 阅读 · 0 评论 -
AtomicInteger的CAS原理
CAS原理: 通过查看AtomicInteger的源码可知, `private volatile int value;public final boolean...转载 2019-06-17 08:24:53 · 190 阅读 · 0 评论 -
面试必问的CAS,你懂了吗?
转自:https://blog.csdn.net/v123411739/article/details/79561458 概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来...转载 2019-06-18 08:45:31 · 184 阅读 · 0 评论 -
Java并发:volatile关键字详解
转自:https://blog.csdn.net/v123411739/article/details/79438066 概述volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的...转载 2019-06-18 08:49:22 · 150 阅读 · 0 评论 -
ReentrantLock 与 AQS记忆脑图 及部分源码全图分析
类之间关系ReentrantLock 抽象内部静态类SyncextendsAbstractQueuedSynchronizer 最终静态类FairSyncextendsSync 最终静态类NonFairSyncextendsSync抽象静态类AbstractQ...原创 2019-07-13 15:43:18 · 251 阅读 · 0 评论 -
多线程基础一
目录一、概念(掌握)二、多线程并行和并发的区别(掌握)三、Java程序运行原理和JVM的启动是多线程的吗(掌握)四、多线程程序实现的方式(掌握)五、匿名内部类实现线程的两种方式(掌握)六、获取线程名字和设置名字七、休眠线程(掌握)八、守护线程九、加入线程十、礼让线程十一、线程的优先级十二、同步代码块(掌握)十三、同步方法(掌握)十四、线程安全...原创 2019-08-22 13:03:19 · 552 阅读 · 0 评论 -
多线程基础二
目录一、单例模式二、Runtime就是饿汉式单例模式实现的三、两个线程间的通信(掌握)四、三个及以上的线程通信(掌握)五、jdk1.5以后ReentrantLock可重入锁六、线程组七、线程的5种状态(掌握)八、线程池(重点)九、多线程程序实现的方式3十、线程的interrupt、interrupted、isInterrupted一、单例模式1、共有...原创 2019-08-22 17:27:50 · 180 阅读 · 0 评论 -
ReentrantLock与synchronized比较
一、多线程同步内部如何实现的?wait/notify,synchronized,ReentrantLock等二、ReentrantLock与synchronized各版本及比较1、表格描述 ReentrantLock synchronized 版本 jdk1.6出现(因为synchronized的那个时候性能太低) 一直存在(jdk1.6开始优化...原创 2019-09-07 16:23:35 · 323 阅读 · 2 评论 -
什么是锁,死锁发生的必要条件,锁避免的方式
转自:https://www.cnblogs.com/Kevin-ZhangCG/p/9038223.html 什么是死锁?死锁发生的四个必要条件是什么?如何避免和预防死锁产生? 什么是死锁? 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了...转载 2019-06-14 07:46:16 · 466 阅读 · 0 评论