![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发研究室
文章平均质量分 93
坐上鲸鱼学技术
我想成为flink大神
展开
-
高并发研究室-08CAS与死锁
本章主要讲一下CAS与死锁的详解 CAS CAS是什么 cas 全称 “Compare-And-Swap”。中文叫“比较并且交换”。是一种思想,一种算法。 原子类与乐观锁的实现原理就是CAS. 在多线程的情况下,各个代码的执行顺序是不能确定的,所以为了保证并发安全,我们可以使用互斥锁。而 CAS 的特点是避免使用互斥锁,当多个线程同时使用 CAS 更新同一个变量时,只有其中一个线程能够操作成功,而其他线程都会更新失败。不过和同步互斥锁不同的是,更新失败的线程并不会被阻塞,而是被告知这次由于竞争而导致的操作失原创 2020-07-24 14:33:13 · 361 阅读 · 0 评论 -
高并发研究室07-ThreadLocal讲解
本章主要讲一下本地线程变量ThreadLocal ThreadLocal是什么 在我们所知的并发中,多线程访问共享资源时,不能保证线程安全。一般使用者在访问共享变量的时候需要进行额外的同步操作才能进行操作。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。就是共享变量副本后存在线程自己内部。这样的话对变量的修改,不会影响到其他线程。 ThreadLoca原创 2020-07-16 11:45:49 · 128 阅读 · 0 评论 -
高并发研究室06-原子类Atomic*
本章主要讲一下原子类 原子类定义 在了解原子类,我们先需要知道原子性。在程序中,原子性指的是一组操作要么全都操作成功,要么全都失败,不能只操作成功其中的一部分。 原子类指的就是在java.util.concurrent.atomic 下的类,就是具有原子性的类,可以原子性地执行添加、递增、递减等操作。比如常见的线程不安全的i++,可以替换成getAndIncrement 原子类的作用 原子类是为了保证并发情况线程安全。比锁更具有一些优势,可以理解为乐观锁。 粒度更细:原子变量可以把竞争范围缩小到变量级别,原创 2020-07-16 09:56:30 · 120 阅读 · 0 评论 -
高并发研究室01-线程池详解
线程池 三种线程的创建方式 继承Thread类实现Runnable接口使用callable与futher方式创建线程,这个是带返回值的。 线程池的好处 第一点,线程池可以解决线程生命周期的系统开销问题,同时还可以加快响应速度。因为线程池中的线程是可以复用的,我们只用少量的线程去执行大量的任务,这就大大减小了线程生命周期的开销。而且线程通常不是等接到任务后再临时创建,而是已经创建好时刻准备执行任务,这样就消除了线程创建所带来的延迟,提升了响应速度,增强了用户体验。第二点,线程池可以统筹内存和 CPU 的使原创 2020-07-14 18:43:17 · 87 阅读 · 0 评论 -
高并发研究室02-定制线程池以及线程复用原理
本章主要讲解我们如何通过真实业务情况定制合适的线程池,如何关闭线程池,线程复用原理 线程数量的判断 在我们准备根据业务环境定义一个线程池时,需要根据业务来判断一个任务执行的速度,耗费的性能。然后来确定线程数。 我们大致把任务分为两种 CPU密集型任务 首先,我们来看 CPU 密集型任务,比如加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任务。对于这样的任务最佳的线程数为 CPU 核心数的 1~2 倍,如果设置过多的线程数,实际上并不会起到很好的效果。此时假设我们设置的线程数量是 CPU 核心数的原创 2020-07-14 18:42:09 · 111 阅读 · 0 评论 -
高并发研究室03-锁的七大类浅谈
本章主要就根据锁的分类,大致的了解一些锁的概念 锁的7大分类 锁的分类是根据锁的特性来分类的。一把锁可能有多种特性,比如ReentrantLock既可以是可中断锁,又是可重入锁 7大类分别是: 偏向锁/轻量级锁/重量级锁;可重入锁/非可重入锁;共享锁/独占锁;公平锁/非公平锁;悲观锁/乐观锁;自旋锁/非自旋锁;可中断锁/不可中断锁。 偏向锁/轻量级锁/重量级锁 偏向锁/轻量级锁/重量级锁,这三种锁特指 synchronized 锁的状态,通过在对象头中的 mark word 来表明锁的状态。 偏向锁 如果原创 2020-07-14 18:40:56 · 139 阅读 · 0 评论 -
高并发研究室04-锁的相关技术点
本文章主要讲解一些自己对于锁的一些理解,monitor,lock等等一些技术点 synchronized 与 monitor锁 monitor锁是什么 monitor英文翻译为监视器。java虚拟机中synchronized是基于monitor来实现的同步。 每个 Java 对象都可以用作一个实现同步的锁,这个锁也被称为内置锁或 monitor 锁,获得 monitor 锁的唯一途径就是进入由这个锁保护的同步代码块或同步方法,线程在进入被 synchronized 保护的代码块之前,会自动获取锁,并且无论是原创 2020-07-14 18:40:22 · 112 阅读 · 0 评论 -
高并发研究室05-ConcurrentHashMap
本章主要讲解一些HashMap与ConcurrentHashMap的原理与对比。 HashMap线程不安全 put源码如下: 这个modCount 是类变量,也就是在jvm内存结构中存放在方法区的,方法区是共享的,那么也就是modCount这个变量不是线程安全。而且源码中++modCount不是原子操作。这个其实有三个步骤先增加,后保存,最后读取。这三个操作不是加锁同步的。因此HashMap的put()是线程不安全的。 jdk1.8中有多个线程同时使用put来添加元素,而且恰好两个put的数据hash值一原创 2020-07-14 18:38:19 · 105 阅读 · 0 评论