JUC

2024/4/11 14:45:34

线程池3大方法、7大参数、4种拒绝策略

1.池化技术 程序的运行,本质:占用系统的资源! (优化资源的使用 > 池化技术) 线程池、连接池、内存池、对象池///… 创建、销毁。十分浪费资源 池化技术:事先准备好一些资源,有人要用&…

走进callable,来看看callable是怎么一步步勾搭上Thread的!

1.Callable接口 2.Callable与Runnable不同 *1.Callable是java.util.concurrent下的接口,有返回值,可以跑出被检查出的异常 *2Runable是java.lang下的接口,没有返回值,不可以抛出检查出的异常 *3.二者重写调用的方法不同&#xf…

wait和sleep的区别,Synchronized锁和lock锁的区别你真的搞懂了吗?

一:wait()和sleep()方法 1、二者来自不同的类 wait ----> Objec类 sleep—> Thread类 2、关于锁的释放 wait 会释放锁 sleep 睡觉了,抱着锁睡觉,不会释放! 3、使用的范围…

ReadWriteLock,读写锁你真的会用吗?

ReadWriteLock 基本介绍 独占锁(写锁) 一次只能被一个线程占有共享锁(读锁) 多个线程可以同时占有 ReadWriteLock 读-读 可以共存!读-写 不能共存!写-写 不能共存!可以多个线程同时读&#…

9. 阻塞队列

阻塞队列是共享队列(多线程操作),一端输入,一端输出 不能无限放队列,满了之后就会进入阻塞,取出也同理 当队列是空的,从队列中获取元素的操作将会被阻塞 当队列是满的,从队列中添…

1. Lock (锁的)接口

目录 1.1 复习synchronized 1.2 Lock接口 1.3 Lock方法 1.4 两者差异 1.1 复习synchronized 他是Java的关键字,是一种同步锁,能够修饰 一个 对象,变量,方法, 来控制这个所修饰的,被顺序的访问&#xff…

JUC多线程编程八锁你都知道了吗?关于锁的八个问题

关于锁的八个问题—八锁 前面的文章中留下一个疑问,到底什么是锁,锁到底锁的是谁? 这里我们就用打电话和发短信的例子来距离说明八锁问题—>锁的是对象方法的调用者或者Class模板(.class) 1、标准情况下&#xff…

JUC多线程编程之生产者与消费者问题(Synchronized和JUC版)

生产者与消费者问题 在面试中&#xff0c;生产者与消费者是高频问题之一 1.生产者和消费者问题 Synchronized 版 public class A {public static void main(String[] args) {Data data new Data();new Thread(() -> {for (int i 0; i < 10; i) {try {data.increment…

就算错过,也不进来看看?volatile保证可见性、非原子性以及避免指令重排(内存屏障)详解

一.JMM–Java内存模型 *1.什么是JMM&#xff1f; JMM &#xff1a; Java内存模型&#xff0c;不存在的东西&#xff0c;是一种概念&#xff01;是一种约定&#xff01; *2.关于JMM的一些同步的约定&#xff1a; 1、线程解锁前&#xff0c;必须把共享变量立刻刷回主存。 2、…

JUC集合类 ConcurrentSkipListMap源码解析 JDK8

文章目录前言源码注释术语节点定义构造器get 查找操作返回情况findPredecessorput 插入操作假设新建层数没有超过最大层数假设新建层数超过了最大层数返回情况remove 删除操作findNodetryReduceLevel返回情况marker存在的必要性如果marker不存在marker存在时总结前言 Concurre…

JUC集合类 CopyOnWriteArrayList源码解析 JDK8

文章目录前言核心成员常用方法getsetaddremoveremove(int index)remove(Object o)index > lenindex < lenfindIndex代码块之后cleartoArray迭代器总结前言 CopyOnWriteArrayList 是一种写时复制的ArrayList&#xff0c;它将读操作和写操作的情形区分开来&#xff0c;并在…

JUC框架 Semaphore源码解析 JDK8

文章目录前言重要成员构造器获取信号量&#xff08;减小state&#xff09;非公平实现的tryAcquireShared公平实现的tryAcquireShared释放信号量&#xff08;增加state&#xff09;工具方法tryAcquirereducePermitsdrainPermits总结前言 Semaphore在多线程协作中常常用来控制公…

JUC集合类 LinkedBlockingQueue源码解析 JDK8

文章目录前言成员构造器入队addofferput超时offer入队方法总结出队removepolltake超时poll出队方法总结内部删除 remove(Object o)获取操作peekelement迭代器总结前言 LinkedBlockingQueue是一种FIFO&#xff08;first-in-first-out 先入先出&#xff09;的有界阻塞队列&#…

JUC集合类 ConcurrentLinkedQueue源码解析 JDK8

文章目录前言概述不变式基本不变式headtail初始化队列初始化Node初始化add/offer 入队操作出队操作pollpeekfirstremove 删除操作remove的bugsize 弱一致性的方法addAll迭代器总结前言 ConcurrentLinkedQueue是一种FIFO&#xff08;first-in-first-out 先入先出&#xff09;的…

JUC集合类 ArrayBlockingQueue源码解析 JDK8

文章目录前言成员构造器入队addofferput超时offer总结出队peekpolltake超时poll总结remove 删除操作总结前言 ArrayBlockingQueue是一种FIFO&#xff08;first-in-first-out 先入先出&#xff09;的有界阻塞队列&#xff0c;底层是数组&#xff0c;也支持从内部删除元素。并发…

JUC框架 ReentrantReadWriteLock源码解析 JDK8

文章目录前言重要成员内部类关系构造器Sync的成员同步器状态的划分读锁计数部分写锁的获取和释放写锁的获取写锁的释放读锁的获取和释放读锁的获取读锁的释放锁降级总结前言 ReentrantReadWriteLock是我阅读了AQS源码以来最感兴趣的类&#xff0c;因为它不像别的JUC构件只使用…

JUC集合类 ConcurrentLinkedDeque源码解析 JDK8

文章目录前言概述linkFirst 入队pollFirst 获取并出队first()succ()unlink()unlinkFirstskipDeletedPredecessorsupdateHeadupdateTailgc-unlinking松弛阈值unlink的Unlink interior node逻辑peekFirst 仅获取remove 删除操作size迭代器总结前言 ConcurrentLinkedDeque是一个无…

JUC集合类 CopyOnWriteArraySet源码解析 JDK8

文章目录前言与CopyOnWriteArrayList不同之处addIfAbsentaddAllAbsent总结前言 类似于上一篇讲的CopyOnWriteArrayList&#xff0c;CopyOnWriteArraySet可以认为是一个写时复制的HashSet。 但CopyOnWriteArraySet的底层实现完全依赖了CopyOnWriteArrayList&#xff0c;它持有…

11. Fork与Join分支

将一个大的任务拆分成多个子任务进行并行处理&#xff0c;最后将子任务结果合并成最后的计算结果 该算法相当于递归&#xff0c;且是二分查找思路 八种基本排序问题 &#xff08;第六篇 归并排序&#xff09;图文详解_想成为大神说32的博客-CSDN博客 class Fibonacci extends…

JDK8 ArrayBlockingQueue迭代器 源码解析

文章目录前言Itr成员Itr构造器以及public方法Itrs对Itr的管理ArrayBlockingQueue里对Itrs的调用itrs.elementDequeued()itrs.removedAt(removeIndex)为什么Itrs会去掉失效的迭代器总结前言 ArrayBlockingQueue的迭代器也是弱一致性的&#xff0c;体现在于队列元素被删除后&…

JUC的概述,线程与进程的概念和状态,

所谓JUC是java.util .concurrent 工具包的简称这是一个处理线程的工具包可以实现多线程高并发的内容 。 了解该部分内容先了解线程与进程的相关概念&#xff08;操作系统&#xff09; 以及涉及到的lambda表达式函数的概念 java 8 学习的笔记与总结_想成为大神说32的博客-CSDN博…

异步回调,用一个例子带你起飞!

1.Future接口 Future 设计的初衷&#xff1a; 对将来的某个事件的结果进行建模 异步回调&#xff1a; 这里基本不怎么直接使用future&#xff0c;而是使用它的一个实现类CompletableFuture,这个类的很多方法都是加强了的&#xff0c;比较怕常用。 2.CompletableFuture类 接下…

Java 多线程(七):线程池

Java 多线程&#xff08;七&#xff09;&#xff1a;线程池 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Java 多线程&#xff08;七&#xff09;&#xff1a;线程池 CSDN&#xff1a;Java 多线程&#xff08;七&#xff09;&#xff1a;线程池 工作原理…

AQS深入理解系列(三)共享锁的获取与释放

文章目录前言共享锁与独占锁的区别观察Semaphore的内部类共享锁的获取共享锁的释放head状态为0的情况同时执行doReleaseShared总结前言 在前面两篇系列文章中&#xff0c;已经讲解了独占锁的获取和释放过程&#xff0c;而共享锁的获取与释放过程也很类似&#xff0c;如果你前面…

JUC集合类 LinkedBlockingDeque源码解析 JDK8

文章目录前言成员构造器入队操作putFirstputLast出队操作takeFirsttakeLast删除内部节点removeFirstOccurrenceremoveLastOccurrence迭代器总结前言 LinkedBlockingDeque是一种有界阻塞队列&#xff0c;它的底层是双向链表&#xff0c;所以它是双向的。也就是说&#xff0c;在…

3 . 线程间定制化通信 (交替完成规定的工作)

案列&#xff1a;启动三个线程&#xff0c;按照如下要求&#xff1a; AA打印5此&#xff0c;BB打印10次&#xff0c;CC打印15次&#xff0c;一共进行10轮 具体思路&#xff1a; 每个线程添加一个标志位&#xff0c;是该标志位则执行操作&#xff0c;并且修改为下一个标志位&am…

剑指JUC原理-16.读写锁

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

写入时复制原理和过程以及CopyOnWriteArrayList源码实现的深入剖析

问题疑问 1.为什么要叫写入时复制集合&#xff1f; 2.CopyOnWriteArrayList 实现原理是什么&#xff1f; 3.CopyOnWriteArrayList 和 ArrayList 有什么区别&#xff1f; 4.CopyOnWriteArrayList 复制是怎么进行复制的&#xff1f; 接下来就让我们带着这几个问题&#xff0c;从…

JUC框架 FutureTask源码解析 JDK8

文章目录前言状态消费者链表成员构造器实现Runnable接口实现Future接口普通get、超时getcancel、isCancelledisDone普通写和CAS写混合总结前言 FutureTask的使用方法已经在上一篇进行了讲解&#xff0c;其实它和SynchronousQueue很像&#xff0c;执行task的线程是生产者&#…

JUC并发编程-常用的多线程操作辅助类(必会)、读写锁、阻塞队列

8. 常用的辅助类(必会) 1&#xff09;CountDownLatch CountDownLatch: 减法计数器 CountDownLatch是一个同步辅助类&#xff0c;在多线程环境中用于控制线程的执行顺序。它可以让一个或多个线程等待其他线程完成一组操作后再继续执行。 CountDownLatch通过一个计数器来实现&…

5. 多线程锁 (公平锁和非公平锁,死锁,可重锁)

某一个时刻内&#xff0c;只能有唯一 一个线程去访问这些synchronized 方法 所有的静态同步方法用的也是同一把锁——类对象本身&#xff0c;这两把锁是两个不同的对象&#xff0c;所以静态同步方法与非静态同步方法之间是不会有竞态条件的但是一旦一个静态同步方法获取锁后&am…

听说你看过ThreadLocal源码,来面试下这几个问题

ThreadLocal的用途 ThreadLocal用来给各个线程提供线程隔离的局部变量。使用很简单&#xff0c;通过调用同一个ThreadLocal对象的get/set方法来读写这个ThreadLocal对象对应的value&#xff0c;但是线程A set值后&#xff0c;不会影响到线程B之后get到的值。ThreadLocal对象通…

AQS 框架、JUC常见并发包 简述

AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是 Java 中的一个强大的同步框架&#xff0c;为我们提供了实现各种同步器的基础。在本篇博客中&#xff0c;我们将介绍 AQS 框架的基本原理&#xff0c;并探讨几个常见的 AQS 实现&#xff1a;ReentrantLock、CountDownL…

JUC集合类 PriorityBlockingQueue源码解析 JDK8

文章目录前言成员构造器原地建堆入队offer扩容出队poll获取堆顶方法peek内部删除迭代器总结前言 PriorityBlockingQueue是一个无界阻塞队列&#xff0c;它的出队方式不再是FIFO&#xff0c;而是优先级高的先出队。其内部实现是最小堆&#xff0c;即堆顶元素是逻辑上最小的那个…

【阻塞队列】阻塞队列DelayedWorkQueue源码详解

目录 一、前言 二、ScheduledThreadPoolExecutor线程池 三、DelayedWorkQueue延迟阻塞队列 四、工作原理 五、源码分析 5.1 定义 5.2 成员属性 5.3 构造函数 5.4 入队方法 5.4.1 offer添加元素 5.4.2 扩容grow() 5.4.3 向上堆化siftUp 5.5 出队方法 5.5.1 take()…

JDK8 PriorityBlockingQueue(Collection<? extends E> c)构造器 源码解析

文章目录前言if (pq.getClass() PriorityBlockingQueue.class)if (a.getClass() ! Object[].class)if (screen && (n 1 || this.comparator ! null))heapify()PriorityBlockingQueue的BUG&#xff1f;&#xff01;总结前言 PriorityBlockingQueue的这个(Collection&…

【JUC】一、synchronized关键字与Lock接口

文章目录 1、JUC2、进程与线程3、并发与并行4、用户线程和守护线程5、对象锁和类锁6、Synchronized关键字7、synchronized案例8、Lock接口 1、JUC JUC&#xff0c;即java.util.concurrent这个处理线程的工具包&#xff0c;始于JDK1.5&#xff0c;其中下有三个包&#xff0c;为…

JUC集合类 SynchronousQueue源码解析 JDK8

文章目录前言Transferer抽象类TransferStack节点成员节点类型TransferStack成员transfer方法awaitFulfillcleanTransferQueue节点成员节点类型TransferQueue成员transfer方法awaitFulfillclean无效操作总结前言 SynchronousQueue其实就是LinkedTransferQueue的升级版&#xff…

【JUC】十四、synchronized进阶

文章目录 1、synchronized2、synchronized与monitor3、管程Monitor4、Q&#xff1a;为什么每个Java对象都可以成为一个锁&#xff1f;5、小结 1、synchronized 写个demo&#xff0c;具体演示下对象锁与类锁&#xff0c;以及synchronized同步下的几种情况练习分析。demo里有资源…

Redis缓存更新策略、详解并发条件下数据库与缓存的一致性问题以及消息队列解决方案

0、前言 我们知道&#xff0c;缓存由于在内存中&#xff0c;数据处理速度比直接操作数据库要快很多&#xff0c;因此常常将数据先读到缓存中&#xff0c;再进行查询、更新等操作。 但与之而来的问题就是&#xff0c;内存中的数据不仅没有持久化&#xff0c;而且需要保证…

JUC AtomicIntegerArray源码解析 JDK8

前言 AtomicIntegerArray提供了对数组元素的原子操作&#xff0c;与其他非数组的原子类相比&#xff0c;它的成员不是volatile的而是final的了。 JUC框架 系列文章目录 成员 private static final Unsafe unsafe Unsafe.getUnsafe();private static final int base unsafe…

CountDownLatch和CyclicBarrier详解

1. CountDownLatch 1.1 简介 CountDownLatch 是 Java 中并发包&#xff08;java.util.concurrent&#xff09;提供的一种同步工具&#xff0c;用于在多线程环境中协调多个线程之间的执行顺序。它的作用是允许一个或多个线程等待其他线程完成操作。 CountDownLatch 通过一个计…

闲聊AQS面试和源码解读---可重入锁、LockSupport、CAS;从ReentrantLock源码来看公平锁与非公平锁、AQS到底是怎么用CLH队列来排队的?

AQS原理可谓是JUC面试中的重灾区之一&#xff0c;今天我们就来一起看看AQS到底是什么&#xff1f; 这里我先整理了一些JUC面试最常问的问题&#xff1f; 1、Synchronized 相关问题以及可重入锁 ReentrantLock及其他显式锁相关问题 1、 Synchronized 用过吗&#xff0c;其原理是…

JUC - ReentrantLock源码解析 - 多图警告

文章目录2.1.1.0 构造函数2.1.1.1 lockInterruptibly - 可中断锁 - 正在等待获取锁的线程可直接调用Thread.interrupt该线程直接放弃获取锁&#xff0c;且直接抛出异常tryAcquiredoAcquireInterruptibly2.1.1.2 lock - 等待锁的线程在另一个线程被interrupt不会立刻终止的原因&…

Java 并发工具合集 JUC 大爆发!!!

并发工具类 通常我们所说的并发包也就是 java.util.concurrent (JUC)&#xff0c;集中了 Java 并发的各种工具类&#xff0c; 合理地使用它们能帮忙我们快速地完成功能 。 1. CountDownLatch CountDownLatch 是一个同步计数器&#xff0c;初始化的时候 传入需要计数的线程等待数…

全是干货---阻塞队列BlockingQueue+BlockingQueue四组API+同步队列SynchronousQueue

1.阻塞队列BlockingQueue 简单介绍&#xff1a; 其实呐&#xff0c;阻塞队列也不是什么比较新的东西&#xff0c;他也是collection下的一种&#xff0c;与set、list等是同一等级的 那什么情况下&#xff0c;在哪种场景下我们会使用到阻塞队列呢&#xff1f; *多线程并发处…

JUC框架 CompletableFuture源码解析 JDK8

文章目录前言基础设施创建CompletableFutureCompletableFuture成员Completion内部类AltResult内部类Signaller内部类从supplyAsync thenApply(thenApplyAsync)理解supplyAsyncthenApply(thenApplyAsync)UniApply内部类#tryFireCompletableFuture#uniApply谁执行了当前stage&am…

JUC并发编程-集合不安全情况以及Callable线程创建方式

6. 集合不安全 1&#xff09;List 不安全 //java.util.ConcurrentModificationException 并发修改异常&#xff01; public class ListTest {public static void main(String[] args) {List<Object> arrayList new ArrayList<>();for(int i1;i<30;i){new Thr…

Java 对象是什么样子的?

Java 对象是什么样子的&#xff1f; class Student{ int age; String name; }Student s new Student(18, “zhangsan”); 这里的 s 变量&#xff0c;就是我们常说的引用&#xff0c;这里是强引用。指向对象中的 Java对象。 很多人可能认为&#xff0c;堆中存储了 age 18, na…

JUC并发编程-8锁现象

5. 8锁现象 如何判断锁的是谁&#xff01;锁到底锁的是谁&#xff1f; 锁会锁住&#xff1a;对象、Class 深刻理解我们的锁 问题1 两个同步方法&#xff0c;先执行发短信还是打电话 public class dome01 {public static void main(String[] args) {Phone phone new Phon…

10. 线程池

连接池是创建和管理一个连接的缓冲池的技术&#xff0c;这些连接准备好被任何需要它们的线程使用 线程池&#xff08;英语&#xff1a;thread pool&#xff09;一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&am…

剑指JUC原理-5.synchronized底层原理

Java对象头 以32位虚拟机为例&#xff1a; 普通对象 在Java虚拟机中&#xff0c;每个对象都有一个对象头&#xff08;Object Header&#xff09;&#xff0c;其中包含了一些用于管理对象的元数据信息。对象头通常由两部分组成&#xff1a;mark word&#xff08;标记字&#x…

【并发编程】AQS原理

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳中求进&#xff0c;晒太阳 1. 概述 全称是 AbstractQueuedSynchronizer&#xff0c;是阻塞式锁和相关的同步器工具的框架 特点&#xff1a; 用 state 属性来表示资源的状…

7. JUC强大辅助类(减少计数CountDownLatch,循环栅栏CyclicBarrier,信号灯Semaphore)便于解决并发功能

该辅助类主要讲述三个减少计数CountDownLatch 循环栅栏 CyclicBarrier 信号灯Semaphore 7.1 CountDownLatch 该类的构造方法为 CountDownLatch(int count)构造一个用给定计数初始化的CountDownLatch在这里插入代码片 两个常用的主要方法await() 使当前线程在锁存器倒计数至…

剑指JUC原理-15.ThreadLocal

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

JUC之Executors的4种快捷创建线程池的方法

文章目录 JUC之Executors的4种快捷创建线程池的方法newSingleThreadExecutor创建“单线程化线程池”newFixedThreadPool创建“固定数量的线程池”newCachedThreadPool创建“可缓存线程池”newScheduledThreadPool创建“可调度线程池”Executors快捷创建线程池的潜在问题FixedTh…

Java 多线程(四):锁(二)

Java 多线程&#xff08;四&#xff09;&#xff1a;锁&#xff08;二&#xff09; 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Java 多线程&#xff08;四&#xff09;&#xff1a;锁&#xff08;二&#xff09; CSDN&#xff1a;Java 多线程&#xff…

juc基础(四)

目录 一、ThreadPool 线程池 1、参数说明 2、拒绝策略 3、线程池种类 &#xff08;1&#xff09;newCachedThreadPool(常用) &#xff08;2&#xff09;newFixedThreadPool(常用) &#xff08;3&#xff09;newSingleThreadExecutor(常用) &#xff08;4&#xff09;ne…

准备好了吗?带你读底层!深入理解CAS ,从juc原子类一路追溯到unsafe类再到ABA原子引用!

一&#xff1a;什么是CAS&#xff1f; CAS&#xff0c;在Java并发应用中通常指CompareAndSwap或CompareAndSet&#xff0c;即比较并交换。 CAS是一个原子操作 是用于实现多线程同步的原子指令&#xff0c;它比较一个内存位置的值并且只有相等时修改这个内存位置的值为新的值&…

JUC线程池 ScheduledThreadPoolExecutor源码解析 JDK8

文章目录前言成员和构造器成员构造器提交任务ScheduledExecutorService接口——提交延时任务继承部分ScheduledExecutorService接口——提交周期任务delayedExecuteScheduledFutureTask内部类成员和构造器run方法分析周期任务执行过程关闭线程池优先队列总结前言 ThreadPoolEx…

谈谈悲观锁

谈谈悲观锁 乐观锁&#xff0c;悲观锁&#xff0c;并不是特指什么具体的锁&#xff0c;而是一种策略&#xff0c;思想。 悲观锁就是比较悲观&#xff0c;认为自己使用数据的时候&#xff0c;一定会有其他线程来修改数据&#xff0c;所以在获取数据的时候&#xff0c;会先加锁&a…

JUC框架 CyclicBarrier源码解析 JDK8

文章目录前言与CountDownLatch的区别重要成员构造器辅助方法nextGenerationbreakBarrierresetawait从问题分析深入理解CyclicBarrier有几种线程在执行&#xff1f;一代线程们通过barrier的完整流程是什么&#xff1f;前n-1个线程发生中断或超时的流程是什么&#xff1f;第n个线…

ForkJoin、普通方法、stream并行流计算对比

1.什么是ForkJoin? orkJoin 在 JDK 1.7 &#xff0c; 并行执行任务&#xff01;提高效率。大数据量&#xff01; 大数据&#xff1a;Map Reduce &#xff08;把大任务拆分为小任务&#xff09; 2.ForkJoin特点 工作窃取&#xff0c;这个里面维护的都是双端队列 3.ForkJoin结…

JUC集合类 ConcurrentHashMap源码解析 JDK8

文章目录前言常量成员节点类构造器put 插入操作加锁情况红黑树的binCount固定为2返回情况spreadinitTablehelpTransferresizeStampsizeCtl的低16bit退出循环的条件treeifyBintryPresizeaddCount计数部分计数部分结束时扩容部分CAS失败影响扩容fullAddCountwasUncontended的作用…

JUC集合类 LinkedTransferQueue源码解析 JDK8

文章目录前言LinkedTransferQueue概述术语解释xfer交易后来的一方交易先来的一方tryAppendtryMatchDataunsplice为什么是普通语义而不是CAS内部删除 remove迭代器总结前言 LinkedTransferQueue是一种特殊的无界阻塞队列&#xff0c;它提供一种Transfer的功能&#xff0c;用以保…

JDK8 ConcurrentHashMap的Bug集锦

前言 JDK8的ConcurrentHashMap并不是完美的&#xff0c;从https://bugs.openjdk.java.net/projects/JDK/issues上也可以看到JDK的很多Bug&#xff0c;当然&#xff0c;通过给concurrency-interest发邮件也可以和Doug Lea直接对话。 最重要的是&#xff0c;知道了这些bug的存在…

Java 多线程(二):并发编程的三大特性

Java 多线程&#xff08;二&#xff09;&#xff1a;并发编程的三大特性 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Java 多线程&#xff08;二&#xff09;&#xff1a;并发编程的三大特性 CSDN&#xff1a;Java 多线程&#xff08;二&#xff09;&am…

JUC并发编程共享模型之管程(三)(上)

三 共享模型之管程&#xff08;上&#xff09; 4.1 共享问题 问题发现 Slf4j public class ShareTest01 {static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() -> {for(int i 0; i < 5000; i){count…

Java 多线程(六):容器

Java 多线程&#xff08;六&#xff09;&#xff1a;容器 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Java 多线程&#xff08;六&#xff09;&#xff1a;容器 CSDN&#xff1a;Java 多线程&#xff08;六&#xff09;&#xff1a;容器 Vector/HashTa…

JUC高并发编程的学习,知识点详细概括

JUC 的概述 https://blog.csdn.net/qq_52252193/article/details/121903199 一.Lock 接口的概述 1. Lock &#xff08;锁的&#xff09;接口_想成为大神说32的博客-CSDN博客 二.线程间的通信 (Sysnchronized. Lock,的案例&#xff09; 2.什么是线程间的通信 &#xff1f;怎么实…

【线程池】史上最全的ThreadPoolExecutor源码详解

目录 一、线程池框架 1.1 第一层结构 1.2 接口简介 1.3 核心实现类 1.4 辅助类 1.5 完成服务 二、ThreadPoolExecutor的成员属性和内部类 2.1 主要成员属性以及工具方法 2.2 五种内部类 2.2.1 拒绝策略内部类&#xff08;Policy&#xff09; 2.2.2 工作线程内部类&a…

JUC - LinkedBlockingQueue源码解析 - 多图警告

文章目录LinkedBlockingQueue - 基于链表的阻塞队列继承关系源码解析LinkedBlockingQueue - 基于链表的阻塞队列 啥是阻塞&#xff1a;  ① 队列已经容量满&#xff0c;在put的话&#xff0c;该线程一直等待&#xff0c;直到容量不满才可以put进去  ② 队列已经无元素可取&am…

Java 多线程(三):锁(一)

Java 多线程&#xff08;三&#xff09;&#xff1a;锁&#xff08;一&#xff09; 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Java 多线程&#xff08;三&#xff09;&#xff1a;锁&#xff08;一&#xff09; CSDN&#xff1a;Java 多线程&#xff…

多线程JUC:等待唤醒机制(生产者消费者模式)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;多线程&JUC&#xff1a;解决线程安全问题——synchronized同步代码块、Lock锁 &#x1f4da;订阅专栏&#xff1a;多线程&am…

JUC集合类 DelayQueue源码解析 JDK8

前言 DelayQueue是一个无界阻塞队列&#xff0c;它和PriorityBlockingQueue一样是一个优先队列&#xff0c;但区别在于队列元素只能放置Delayed对象&#xff0c;而且只有元素到期后才能将其出队。 内部是一个最小堆&#xff0c;堆顶永远是最先“到期”的那个元素。如果堆顶元…

CompletableFuture.join() vs Future.get(),开发中哪个更好

CompletableFuture和Future都是Java中的接口&#xff0c;用于异步编程和并发处理。 Future表示一种异步计算的结果&#xff0c;可以通过get()方法获取计算结果或等待计算的完成。但是&#xff0c;如果计算还未完成&#xff0c;get()方法会阻塞线程&#xff0c;这会影响并发性能…

JUC并发编程系列(一):Java线程

前言 JUC并发编程是Java程序猿必备的知识技能&#xff0c;只有深入理解并发过程中的一些原则、概念以及相应源码原理才能更好的理解软件开发的流程。在这篇文章中荔枝会梳理并发编程的基础&#xff0c;整理有关Java线程以及线程死锁的知识&#xff0c;希望能够帮助到有需要的小…

java高并发系列-第3天:有关并行的两个重要定律

有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说&#xff0c;最重要的应该是处于两个目的。 第一&#xff0c;为了获得更好的性能&#xff1b; 第二&#xff0c;由于业务模型的需要&#xff0c;确实需要多个执行实体。 在这里&#xff0c;我将更加关注第…

【JUC源码专题】AQS 源码分析(JDK8)

文章目录同步队列同步队列结点 Node同步队列状态 state获取互斥锁acquire 方法tryAcquire 方法获取互斥锁addWaiter 方法enq() 入队acquireQueued()setHead 方法设置头节点shouldParkAfterFailedAcquire()parkAndCheckInterrupt()cancelAcquire 发生异常&#xff0c;取消线程获…

Java 多线程(五):锁(三)

Java 多线程&#xff08;五&#xff09;&#xff1a;锁&#xff08;三&#xff09; 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Java 多线程&#xff08;五&#xff09;&#xff1a;锁&#xff08;三&#xff09; CSDN&#xff1a;Java 多线程&#xff…

8. 读写锁

回顾悲观锁和乐观锁的概念悲观锁&#xff1a; 见字知意&#xff0c;他是干什么都很悲观&#xff0c;所以在操作的时候&#xff0c;每次都上锁&#xff0c;使用时解锁乐观锁&#xff1a;他很乐观&#xff0c;多线程&#xff0c;并不上锁&#xff0c;但是会发生 线程安全问题 表…

CompletableFuture超详解与实践

0.背景 一个接口可能需要调用 N 个其他服务的接口&#xff0c;这在项目开发中还是挺常见的。举个例子&#xff1a;用户请求获取订单信息&#xff0c;可能需要调用用户信息、商品详情、物流信息、商品推荐等接口&#xff0c;最后再汇总数据统一返回。 如果是串行&#xff08;按…

剑指JUC原理-18.同步协作

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

java面试——juc篇

目录 一、线程基础 1、进程与线程的区别&#xff1f;&#xff08;⭐⭐⭐&#xff09; 2、并行和并发的区别&#xff08;⭐&#xff09; 3、创建线程的方式有哪些&#xff1f;&#xff08;⭐⭐⭐⭐&#xff09; runnable和Callable的区别&#xff1a; 线程中的run()和 star…

剑指JUC原理-8.Java内存模型

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

println导致的线程缓冲区刷新|一个volatile引起的思考

问题引出&#xff1a; 今天在看volatile的时候&#xff0c;自己写了个例子&#xff0c; 发现即使没有volatile&#xff0c;我程序也照常跑了 描述 首先看看这个情况的描述 第一个代码是有关何时以及如何使用volatile的示例&#xff0c;熟悉volatile的一定知道&#xff0c;为…

死磕JUC之AQS

AQS目录 AQS简介 FIFO队列 NODE节点 独占模式 共享模式 ConditionObject AQS简介 AQS是Concurrent包核心之一&#xff0c;全称是AbstractQueuedSynchronizer。ReetrantLock&#xff0c;Semaphore,CountDownLatch都有一个内部类Sync继承AQS。 AQS的核心是通过一个共享变量…

谈谈乐观锁

谈谈乐观锁 乐观锁&#xff0c;悲观锁&#xff0c;并不是特指什么具体的锁&#xff0c;而是一种策略&#xff0c;思想。 乐观锁就是比较乐观&#xff0c;认为自己在使用数据的时候&#xff0c; 不会有其他线程对其进行修改&#xff0c;所以就不会加锁&#xff0c;说白了乐观锁&…

剑指Offer(类库)——JUC包的知识梳理

首先来展示一张JUC包下包与类的框图 其中&#xff0c;JUC下共有这么几个大包&#xff1a; 线程执行器executor锁locks原子变量类atomic并发工具类tools并发集合collections 针对上面几个JUC的大包&#xff0c;之前已经介绍过了一部分的并发集合和Executor线程执行类了。 下面…

【JavaEE初阶】 JUC(java.util.concurrent) 的常见类

文章目录 &#x1f340;ReentrantLock&#x1f6a9;ReentrantLock 的用法&#x1f6a9;ReentrantLock 和 synchronized 的区别&#x1f6a9;如何选择使用哪个锁? &#x1f38d;原子类&#x1f38b;线程池&#x1f333;信号量 Semaphore&#x1f334;CountDownLatch&#x1f38…

【JUC】三、集合的线程安全

文章目录 1、ArrayList集合线程安全问题分析2、解决方式一&#xff1a;Vector或synchronizedList( )3、解决方式二&#xff1a;CopyOnWriteArrayList 写时复制4、HashSet集合线程不安全的分析与解决5、HashMap集合线程不安全的分析与解决 1、ArrayList集合线程安全问题分析 对…

CAS无锁并发

无锁实现线程安全 public final class Singleton{public static void main(String[] args) {Account.demo(new AccountCas(10000));} } class AccountCas implements Account{private AtomicInteger balance;public AccountCas(int balance){this.balance new AtomicInteger(…

Java中的各种锁显示锁ReentrantLock和AQS学习(深入源码)

文章目录1. 锁的类型&锁的分类1.1 乐观锁1.2 悲观锁1.3 自旋锁1.4 可重入锁&#xff08;递归锁&#xff09;1.5 读写锁1.6 公平锁1.7 非公平锁1.8 共享锁1.9 独占锁1.10 重量级锁1.11 轻量级锁1.12 偏向锁1.13 分段锁1.14 互斥锁1.15 同步锁1.16 死锁、活锁、饥饿1.17 锁粗…

JUC并发编程-四大函数式接口、Stream 流式计算、ForkJoin并行执行任务

12. 四大函数式接口 新时代的程序员&#xff1a;lambda表达式、链式编程、函数式接口、Stream流式计算 函数式接口&#xff1a;只有一个方法的接口&#xff0c;可以有一些默认的方法 如&#xff1a;Runnable接口函数 1&#xff09;Function 函数型接口 public class Functio…

JUC 之 Synchronized 与 锁升级

—— 对象内存布局 和 对象头 对象构成布局 1. 对象头 对象标记 Mark Word 哈希码GC 标记 & 次数 GC 年龄 采用 4 位 bit 存储&#xff0c;最大为 15&#xff08;1111&#xff09;&#xff0c;所以 MaxTenutingThreshold 参数&#xff08;分代年龄&#xff09;的参数默…

【共享模型-----管程】

文章目录 1. 为什么会出现线程安全问题2. synchronized 解决方案2.1 线程八锁 3. 变量的线程安全分析3.1 局部变量线程安全分析3.2 常见线程安全类 1. 为什么会出现线程安全问题 一段代码块内如果存在对共享资源的多线程读写操作&#xff0c;称这段代码块为临界区 共享资源&a…

JUC并发编程之线程池Executor原理与源码解析

目录 JUC并发编程之线程池Executor原理与源码解析 线程 六种状态切换如下图所示&#xff1a; 协程 线程池 线程池介绍 线程的实现方式 Executor框架 线程池重点属性 ctl相关方法 线程池存在5种状态 线程池的具体实现 ThreadPoolExecutor 线程池监控 线程池原理 …

【JUC】十八、happens-before先行发生原则

文章目录 1、先行发生原则happens-before2、happens-before总原则3、8条happens-before规则4、案例 1、先行发生原则happens-before 在Java中&#xff0c;Happends-Before本质上是规定了一种可见性&#xff0c; A Happends-Before B&#xff0c;则A发生过的事情对B来说是可见的…

java并发编程及juc包的应用

多线程&#xff1a; 进程是操作系统资源分配的基本单位&#xff0c;而线程是任务调度和执行的基本单位。windows操作系统是多任务操作系统&#xff0c;它以进程为单位&#xff0c;一个进程是一个包含有自身地址的程序&#xff0c;每个正在独立执行的程序都称为进程&#xff0c;…

Java并发工具-4-并发框架(ExecutorForkJoin)

一 Executor 并发框架介绍 1 整体结构介绍 executor [ɪɡˈzekjətə(r)] 执行者 execute [ˈeksɪkjuːt] 执行 从 JDK 1.5 开始&#xff0c;java 中将工作单元和执行机制做了分离&#xff0c;于是 Executor 并行框架出现。 什么是工作单元&#xff08;或称为任务&#xff…

JUC第三十讲:JUC工具类:Exchanger详解

JUC工具类&#xff1a;Exchanger详解 本文是JUC第三十讲&#xff0c;JUC工具类: Exchanger详解。Exchanger是用于线程协作的工具类&#xff0c;主要用于两个线程之间的数据交换。 文章目录 JUC工具类&#xff1a;Exchanger详解带着BAT大厂的面试问题去理解Exchanger1、Exchange…

JUC JMM Java 内存模型

文章目录 计算机存储系统高速缓冲存储器一致性 JMM&#xff08;Java Memory Model&#xff09;可见性原子性有序性指令重排Happens-Before 原则 volatile 关键字volatile 保证可见性volatile 不能保证原子性volatile 禁用指令重排&#xff08;保证有序性&#xff09;内存屏障&a…

JUC高级三:LockSupport与线程中断

JUC高级三:LockSupport与线程中断 1. 线程中断机制 1.1 什么是中断? 首先 一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止。 所以&#xff0c;Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。 其次 在Java中没有办法立即停…

Fail-Fast机制和ConcurrentModificationException并发修改异常

目录说明Fail-Fast机制Fail-Fast机制的理解如何解决Fail-Fast错误机制的问题说明 Fail-Fast机制和ConcurrentModificationException并发修改异常是我们在编写代码的时候经常遇到的问题和异常&#xff0c;我们需要搞清楚这个机制是什么东西并且为什么会抛出这个异常&#xff0c;…

共享模型之不可变类

文章目录 1. 不可变类的使用2. 不可变类设计2.1 不可变类关联设计模式&#xff1a;享元模式2.2 final 原理&#xff1a;写屏障 3. 无状态类设计 1. 不可变类的使用 SimpleDateFormat 不是线程安全的 解决&#xff1a; 思路 - 同步锁&#xff1a;这样虽能解决问题&#xff0c;…

JUC 之 线程阻塞工具 LockSupport

——LockSupport 与 线程中断 线程中断机制 一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止&#xff0c;所以&#xff0c;Thread.stop&#xff0c;Thread.suspend&#xff0c;Thread.resume 都已经被废弃 在 Java 中没有办法立即停止一条线…

【JUC】六、辅助类

文章目录 1、CountDownLatch减少计数2、CyclicBarrier循环栅栏3、Semaphore信号灯 本篇整理JUC的几个同步辅助类&#xff1a; 减少计数&#xff1a;CountDownLatch循环栅栏&#xff1a;CyclicBarrier信号灯&#xff1a;Semaphore 1、CountDownLatch减少计数 案例&#xff1a;6…

【Java开发】JUC进阶 05:函数式接口、ForkJoin

1 四大函数式接口函数式接口&#xff1a;只有一个抽象方法的接口&#xff0c;只要是函数式接口&#xff0c;就可以用lambda表达式简化例如Runnable&#xff1a;FunctionalInterface public interface Runnable {public abstract void run(); }框架底层大量应用函数式接口&#…

【并发编程】ThreadLocal详解与原理

&#x1f4eb;作者简介&#xff1a;小明Java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

JUC学习笔记(一)

1. JUC概述及回顾 1.1. JUC是什么&#xff1f; 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包&#xff0c;在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架&#xff0c;并提供一些功能实用的类&#xff0c;没有这些类&#xff0…

Java并发之CountDownLatch使用

juc包下有个类叫CountDownLatch CountDownLatch不是锁&#xff0c;主要作用是使一个线程等待其他线程各自执行完毕后再执行&#xff0c;通过计数器来实现的。 计数器是无法重置的&#xff0c;当计数器被减到0时&#xff0c;调用await方法都会直接返回。 执行countDown方法的线程…

JUC第二十九讲:JUC工具类: Phaser详解

JUC工具类&#xff1a;Phaser详解 本文是JUC第二十九讲&#xff0c;JUC工具类&#xff1a;Phaser详解。Phaser是JDK 7新增的一个同步辅助类&#xff0c;它可以实现 CyclicBarrier 和CountDownLatch 类似的功能&#xff0c;而且它支持 对任务的动态调整&#xff0c;并支持分层结…

剑指JUC原理-11.不可变设计

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

Java并发工具-1-原子操作(Atomic)

一 原子操作之 AtomicInteger 1 概念解释 什么是原子操作呢&#xff1f;所谓原子操作&#xff0c;就是一个独立且不可分割的操作。 AtomicInteger 工具类提供了对整数操作的原子封装。为什么要对整数操作进行原子封装呢&#xff1f; 在 java 中&#xff0c;当我们在多线程情…

【JUC】Java并发编程从挖坑到入土全解(2)

目录 我们锁的到底是什么&#xff08;8个案例&#xff09; 案例1 案例2 案例3 案例4 案例5 案例6 案例7 案例8 总结 我们锁的到底是什么&#xff08;8个案例&#xff09; 有a、b两个线程&#xff0c;我们基于如下代码进行改造&#xff1a; public static void main…

JUC(java.util.concurrency)包中常用锁相关类

JUC之locks包下的常用锁相关类java.util.concurrency.locksLock接口synchronized、waitLock接口方法使用LockReentrantLock重入锁ReentrantLock与Synchronized的异同ReentrantLock实现公平、非公平锁使用示例ReadWriteLock重入读写锁接口方法使用ReadWriteLockCondition信号量接…

【juc】读写锁ReentrantReadWriteLock

目录 一、说明二、读读不互斥2.1 代码示例2.2 截图示例 三、读写互斥3.1 代码示例3.2 截图示例 四、写写互斥4.1 代码示例4.2 截图示例 五、注意事项5.2.1 代码示例5.2.2 截图示例 一、说明 1.当读操作远远高于写操作时&#xff0c;使用读写锁让读读可以并发&#xff0c;来提高…

【juc】ReentrantReadWriteLock之缓存(仅当学习)

目录 一、说明二、代码示例2.1 pom依赖2.2 示例代码2.3 实体类 三、示例截图 一、说明 1.针对于读多写少的情况 2.先查缓存&#xff0c;没有再去查库 二、代码示例 2.1 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"h…

剑指JUC原理-10.并发编程大师的原子累加器底层优化原理(与人类的优秀灵魂对话)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

系列六、多线程集合不安全

一、多线程List集合不安全 1.1、List集合不安全案例代码 /*** Author : 一叶浮萍归大海* Date: 2023/11/20 12:38* Description: 多线层环境下List集合不安全案例代码*/ public class NotSafeListMainApp {public static void main(String[] args) {List<String> list …

剑指JUC原理-17.CompletableFuture

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

【多线程进阶】JUC中常见类

文章目录 前言1. Callable 接口1.1 回想创建线程方法 2. ReentrantLock 可重入互斥锁3. Atomic 原子类4. 线程池5. Semaphore 信号量6. CountDownLatch总结 前言 本文主要讲解 JUC ---- java.util.concurrent 中的一些常见类. concurrent 就是并发的意思, 所以该类中放的都是一…

JUC并发编程与源码分析笔记09-原子类操作之十八罗汉增强

基本类型原子类 AtomicInteger、AtomicBoolean、AtomicLong。 常用API&#xff1a; public final int get();// 获取当前的值 public final int getAndSet(int newValue);// 获取当前值&#xff0c;并设置新值 public final int getAndIncrement();// 获取当前的值&#xff0…

说说对 JVM 内存模型的理解

说说对JVM 内存模型的理解 ● 谈Java的内存模型&#xff0c;就得先谈谈 CPU的多级缓存模型。 ● CPU的数据不是直接读取内存的。因为CPU的速度&#xff0c;相较于内存&#xff0c;快了几百倍。而是从缓存进行读取的&#xff0c;如果缓存中没有&#xff0c;就把数据从内存中拿到…

java并发包-CountDownLatch CyclicBarrier Semaphore 案例

1.CountDownLatch案例 --调用.await()阻塞等待 --调用countDown()方法每次递减1&#xff0c;直到为0&#xff0c;启动所有等待的线程 package com.roger.juc;import java.util.concurrent.CountDownLatch;/*** java并发包-CountDownLatch计数器* <p>* 一个裁判* 五个运动…

JUC 学习(一) 之 volatile 关键字

JUC 学习(一) 之 volatile 关键字 首先我们来看这么一段代码&#xff1a; package indi.qiaolin.juc;import lombok.Data;/*** 测试JUC volatile 关键字** author qiaolin* version 2018年7月8日**/public class VolatileTest {public static void main(String[] args) {…

ReentrantReadWriteLock、StampedLock

ReentrantLock、ReentrantReadWriteLock、StampedLock 读写锁 一个资源可以被多个读线程访问&#xff0c;或者被一个写线程访问&#xff0c;但是不能同时存在读写线程。 小口诀&#xff1a;读写互斥&#xff0c;读读共享 锁的演变 无锁-----> 独占锁----->读写锁---…

【juc】countdownlatch实现并发网络请求

目录 一、截图示例二、代码示例2.1 测试代码2.2 接口代码 一、截图示例 二、代码示例 2.1 测试代码 package com.learning.countdownlatch;import lombok.extern.slf4j.Slf4j; import org.springframework.web.client.RestTemplate;import java.util.Arrays; import java.uti…

JUC基础-0606

9.ReentrantReadWriteLock读写锁 9.1 锁的基本概念 悲观锁&#xff1a;不支持并发&#xff0c;效率低&#xff0c;但是可以解决所有并发安全问题 乐观锁&#xff1a;支持并发读&#xff0c;维护一个版本号&#xff0c;写的时候比较版本号进行控制&#xff0c;先提交的版本号…

ThreadPoolExecutor线程池

文章目录 一、ThreadPool线程池状态二、ThreadPoolExecutor构造方法三、Executors3.1 固定大小线程池3.2 带缓冲线程池3.3 单线程线程池 四、ThreadPoolExecutor4.1 execute(Runnable task)方法使用4.2 submit()方法4.3 invokeAll()4.4 invokeAny()4.5 shutdown()4.6 shutdownN…

JUC第十六讲:JUC集合: CopyOnWriteArrayList详解

JUC第十六讲&#xff1a;JUC集合: CopyOnWriteArrayList详解 本文是JUC第十六讲&#xff0c;JUC集合: CopyOnWriteArrayList详解。CopyOnWriteArrayList是ArrayList 的一个线程安全的变体&#xff0c;其中所有可变操作(add、set 等等)都是通过对底层数组进行一次新的拷贝来实现…

【JUC-2】Synchronized关键字相关知识

Synchronized synchronized是Java中的关键字&#xff0c;是一种同步锁。它修饰的对象有以下几种&#xff1a; 修饰一个代码块&#xff0c;被修饰的代码块称为同步语句块&#xff0c;其作用的范围是大括号{}括起来的代码&#xff0c;作用的对象是调用这个代码块的对象&#xf…

JUC第十二讲:JUC锁: 锁核心类AQS详解

JUC第十二讲&#xff1a;JUC锁: 锁核心类AQS详解 本文是JUC第十二讲&#xff0c;JUC锁: 锁核心类AQS详解。AbstractQueuedSynchronizer抽象类是核心&#xff0c;需要重点掌握。它提供了一个基于FIFO队列&#xff0c;可以用于构建锁或者其他相关同步装置的基础框架。 文章目录 J…

JUC框架 源码解析系列文章目录 JDK8

前言 笔者在接下来这段时间将对JUC框架内的重点内容进行深度解析&#xff0c;由于内容颇多&#xff0c;需要分成多篇文章&#xff0c;所以在这里列一个目录&#xff0c;方便大家翻阅。 目录 JUC框架的基础是CAS和自旋&#xff0c;而CAS则是利用Unsafe类提供的CAS操作&#x…

JUC——并发编程—第四部分

理解JMM Volatile是Java虚拟机提供的轻量级的同步机制。有三大特性。 1.保证可见性 2.不保证原子性 3.禁止指令重排 定义:Java内存模型&#xff0c;是一个概念。 关于JMM的一些同步的约定: 1、线程解锁前&#xff0c;必须把共享变量立刻刷回主存. 2、线程加锁前&#x…

【JUC-1】java多线程线程基础知识

线程创建方式 继承Thread类.实现Runable接口.实现Callable接口. Runable/Callable接口的实现, 都是重写其中的run/call方法, 实现任务逻辑, 再由线程执行器(可以是Thread类,也可以是线程池)并发执行run/call的逻辑. 而Thread类中的包含start方法, 可以控制线程启动,执行任务…

JUC第十八讲:JUC集合-BlockingQueue 详解

JUC集合-BlockingQueue 详解 JUC里的 BlockingQueue 接口表示一个线程安全放入和提取实例的队列。本文是JUC第十八讲&#xff0c;将给你演示如何使用这个 BlockingQueue&#xff0c;不会讨论如何在 Java 中实现一个你自己的 BlockingQueue。 文章目录 JUC集合-BlockingQueue 详…

JUC-CAS

1. CAS概述 CAS(Compare ans swap/set) 比较并交换&#xff0c;实现并发的一种底层技术。它将预期的值和内存中的值比较&#xff0c;如果相同&#xff0c;就更新内存中的值。如果不匹配&#xff0c;一直重试&#xff08;自旋&#xff09;。Java.util.concurrent.atomic包下的原…

JUC高并发容器-CopyOnWriteArrayList

CopyOnWriteArrayList JUC高并发容器线程安全的同步容器类什么是高并发容器&#xff1f;CopyOnWriteArrayList JUC高并发容器 线程安全的同步容器类 Java同步容器类通过Synchronized(内置锁)来实现同步的容器&#xff0c;比如Vector、HashTable以及SynchronizedList等容器。线…

【JUC系列-01】深入理解JMM内存模型的底层实现原理

一&#xff0c;深入理解JMM内存模型 1&#xff0c;什么是可见性 在谈jmm的内存模型之前&#xff0c;先了解一下并发并发编程的三大特性&#xff0c;分别是&#xff1a;可见性&#xff0c;原子性&#xff0c;有序性。可见性指的就是当一个线程修改某个变量的值之后&#xff0c…

Java中的信号量Semaphore

翻译自geeksforgeeks。 信号量Semaphore 通过使用计数器counter来控制对共享资源的访问。如果计数器大于零&#xff0c;则允许访问。如果为零&#xff0c;则拒绝访问。计数器对共享资源的访问许可进行计数。因此&#xff0c;要访问资源&#xff0c;线程必须要从信号量得到许可…

剑指JUC原理-19.线程安全集合

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

【juc】countdownlatch实现游戏进度

目录 一、截图示例二、代码示例 一、截图示例 二、代码示例 package com.learning.countdownlatch;import java.util.Arrays; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurr…

JUC AtomicStampedReference源码解析 JDK8

前言 大家都知道CAS操作有ABA问题的&#xff0c;且ABA问题是针对引用型对象的&#xff0c;而AtomicStampedReference的出现就是为了解决这一问题而出现的。通过加版本号来实现。 JUC框架 系列文章目录 成员 public class AtomicStampedReference<V> {private static …

剑指JUC原理-12.手写简易版线程池思路

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

【JUC-5】java多线程中的分治框架Fork/Join

ForkJoin 概念 Fork/Join是JDK 1.7加入的新的线程池实现&#xff0c;它体现的是一种分治思想&#xff0c;适用于能够进行任务拆分的cpu密集型运算 所谓的任务拆分&#xff0c;是将一个大任务拆分为算法上相同的小任务&#xff0c;直至不能拆分可以直接求解。使用ForkJoin框架…

【并发编程JUC】Future和CompletableFuture机制

场景题 面试的时候当面试官提出一个场景题&#xff0c;比如有一个翻译接口&#xff0c;同时调用百度、网易、谷歌的三个翻译接口&#xff0c;使用返回的第一个的翻译。这个时候一般的想法可能是&#xff0c;先串行执行。然后异步获取。但是其实都知道这样性能非常慢。 Future…

剑指Offer(类库)——HashMap、HashTable、ConcurrentHashMap底层源码详解

Map是由一对对的Key-Value组成的&#xff0c;key要求唯一&#xff0c;value无所谓。 我们可以针对这点直接看源码; key自带去重功能&#xff0c;因为是Set类型的。 value则只是Collection接口&#xff0c;可以存放任意集合。 下面来看看map的一些实现类 下面&#xff0c;来解…

什么是JUC

什么是JUC JUC指的是&#xff1a;Java里的三个包 java.util.concurrentjava.util.concurrent.atomic&#xff1a;原子性java.util.concurrent.locks&#xff1a;lock锁回顾线程和进程 进程 程序执行的一次过程&#xff0c;一个进程包含一个或多个线程。进程是资源分配的单位 …

juc笔记之synchronized和lock的使用

文章目录一、锁是什么&#xff1f;二、使用步骤1.synchronized2.lock三、总结一、锁是什么&#xff1f; 我们都知道&#xff0c;在多线程的环境下&#xff0c;是会引发线程安全的问题的&#xff0c;那么针对这一问题&#xff0c;java提供了synchronized和lock锁机制来控制线程…

【JAVA】:万字长篇带你了解JAVA并发编程-并发集合【三】

目录 【JAVA】&#xff1a;万字长篇带你了解JAVA并发编程-并发集合【三】集合框架JUC集合类的历史 ConcurrentHashMap基本方法 CopyOnWriteArrayListCopyOnWriteArraySetConcurrentSkipListMap跳表跳表的概念跳表的特性有这么几点&#xff1a;跳表的查找跳表的插入使用 Blockin…

你不知道的单例模式

文章目录一、单例模式是什么&#xff1f;二、单例的类型1.饿汉式三、存在的问题执行的结果不同&#xff0c;破坏成功. ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128223835220.png)总结一、单例模式是什么&#xff1f; 单例模式&#xff0c;也叫单子模式&#…

【JUC(三)】中断与等待唤醒

1. interrupt() 相关方法 interrupt(),interrupted() 和 isinterrupted() 的区别 public void interrupt()&#xff1a;将线程的中断标记设置为 true&#xff0c;并不是真的停止该线程。 如果线程处于 wait()、join()、sleep() 方法的阻塞当中。中断标记会被清除。也就是通过…

Day850.GuardedSuspension模式 -Java 性能调优实战

GuardedSuspension模式 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于GuardedSuspension模式的内容。 小灰工作中遇到一个问题&#xff0c;开发了一个 Web 项目&#xff1a;Web 版的文件浏览器&#xff0c;通过它用户可以在浏览器里查看服务器上的目录和文件。 这…

系列十一、阻塞队列

一、栈 vs 队列 栈&#xff1a;先进后出&#xff0c;后进先出&#xff0c;例如&#xff1a;弹夹 队列&#xff1a;先进先出&#xff0c;后进后出&#xff0c;例如&#xff1a;食堂排队打饭 二、阻塞队列 2.1、概览图 阻塞队列也是队列中的一种&#xff0c;在数据结构中的作用大…

JUC并发编程与源码分析笔记-目录

视频学习地址&#xff1a;尚硅谷JUC并发编程&#xff0c;感谢阳哥&#xff0c;投币支持&#xff0c;不过学到后面&#xff0c;前面的好多又忘了&#xff0c;还是学的不够深刻哇&#xff01; JUC并发编程与源码分析笔记01-本课程前置知识及要求说明 JUC并发编程与源码分析笔记…

并发编程(4)共享模型之无锁

6 共享模型之无锁 本章内容 CAS 与 volatile原子整数原子引用原子累加器Unsafe 6.1 问题提出 有如下需求&#xff0c;保证 account.withdraw 取款方法的线程安全 import java.util.ArrayList; import java.util.List;interface Account {// 获取余额Integer getBalance();…

系列三、创建线程的方式

一、继承Thread /*** Author : 一叶浮萍归大海* Date: 2023/11/20 9:39* Description: 创建线程的第一种方式&#xff1a;继承Thread*/ public class CreateThreadDemo1 extends Thread {Overridepublic void run() {for (int i 1; i < 100; i) {System.out.println(Threa…

JUC阻塞队列BlockingQueue---DelayQueue

JUC阻塞队列BlockingQueue---DelayQueue DelayQueueDelayed接口 使用原理构造方法常量入队put方法出队take方法步骤总结 什么是阻塞队列&#xff1f; DelayQueue DelayQueue 是一个支持延时获取元素的阻塞无界队列&#xff0c; 内部采用优先队列 PriorityQueue 存储元素&…

JVM内置锁synchronized关键字详解

目录 JVM内置锁synchronized关键字详解 设计同步器的意义 如何解决线程并发安全问题&#xff1f; synchronized原理详解 synchronized底层原理 synchronized在jdk1.6前后的变化【重点】 jdk小于1.6时 jdk>1.6时 轻量级锁何时升级为重量级锁&#xff1f;&#xff1f;…

JUC第十四讲:JUC锁: ReentrantReadWriteLock详解

JUC第十四讲&#xff1a;JUC锁: ReentrantReadWriteLock详解 本文是JUC第十四讲&#xff1a;JUC锁 - ReentrantReadWriteLock详解。ReentrantReadWriteLock表示可重入读写锁&#xff0c;ReentrantReadWriteLock中包含了两种锁&#xff0c;读锁ReadLock和写锁WriteLock&#xff…

【JUC系列-08】深入理解CyclicBarrier底层原理和基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

JUC02-多场景下的线程同步操作

场景一&#xff1a;两个线程进行数据传递&#xff0c;一个线程等待另一个线程的结果 在实际业务场景中&#xff0c;我们大概率会使用Future的方式来得到该结果&#xff0c;但Future必须是当t2线程执行完返回结果后才能在t1线程获取到。但我们可能会碰到t2线程业务很重&#xf…

JUC —— Synchronized 的理解与使用

Synchronized 的理解与使用 package com.pengshi.ThreadSychronized;import org.openjdk.jol.info.ClassLayout;/*** description: synchronized 的理解* synchronized 实现原理是对象* 对象 的 组成 &#xff1a;1. 对象头 —— 类的属性* 2. 实例变量 —— 类中的…

系列四、Java8的Lambda表达式

一、概述 Lambda是一个匿名函数&#xff0c;我们可以把Lambda表达式理解为是一段可以传递的代码&#xff08;将代码像数据一样进行传递&#xff09;。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格&#xff0c;使Java的语言表达能力得到了提升。 Lambda 表达式在Jav…

【机试题】CompletableFuture编排

使用CompletableFuture编排 AService.get()、BService.get()、CService.get(int i) &#xff08;ABC三个服务返回结果都是int&#xff09;&#xff0c;满足使用A、B的结果相加&#xff0c;再作为参数传给C&#xff0c;取得C的结果后乘以 100 后返回。 要求&#xff1a; 1.显示指…

JUC中的设计模式

文章目录 1. 终止模式之两阶段终止模式 1. 终止模式之两阶段终止模式 需求&#xff1a;用一个线程每两秒检测***状态&#xff0c;当不想检测时&#xff0c;用另一个线程将其停止 在一个线程 T1 中如何“优雅”终止线程 T2&#xff1f;这里的【优雅】指的是给 T2 一个料理后事…

真实并发编程问题-1.钉钉面试题

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

为什么wait()要在synchronized块中执行

一、不在synchronized块中执行的话&#xff0c;虽然编译时会通过&#xff0c;但在运行的过程中会报错IllegalMonitorStateException。 二、从逻辑上分析&#xff1a; wait()、notify()、notiryAll()这种等待唤醒机制是为了实现线程之间的同步&#xff0c;而实现同步的话&#…

【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类

目录 1、JUC&#xff08;java.util.concurrent&#xff09; 1.1、Callable 接口 1.2、ReentrantLock 可重入锁 1.3、Semaphore 信号量 1.4、CountDownLatch 1、JUC&#xff08;java.util.concurrent&#xff09; 这是java中的一个包&#xff0c;存放着多线程编程中常见的…

JUC包:CountDownLatch源码+实例讲解

1 缘起 有一次听到同事谈及AQS时&#xff0c;我有很多点懵&#xff0c; 只知道入队和出队&#xff0c;CLH&#xff08;Craig&#xff0c;Landin and Hagersten&#xff09;锁&#xff0c;并不了解AQS的应用&#xff0c; 同时结合之前遇到的多线程等待应用场景&#xff0c;发现…

【javaEE】多线程进阶(Part2 JUC、线程安全、死锁)

目录前言一、JUC的常见类Callable接口1. Callable相关2. 相关面试题ReentrantLock类原子类线程池信号量SemaphoreCountDownLatch相关面试题二、 线程安全的集合类ArrayList多线程环境使用队列多线程环境使用哈希表ConcurrentHashMap的优化策略&#xff1a;【经典面试题】三、【…

【JUC系列-03】熟练掌握Atomic原子系列基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

JUC闭锁与AQS技术在启动架构设计中的应用

什么是JUC闭锁&#xff1f; JUC&#xff08;Java.util.concurrent&#xff09;是Java并发编程中的一个重要工具包&#xff0c;其中闭锁&#xff08;CountDownLatch&#xff09;是一种多线程同步工具&#xff0c;用于等待其他线程完成某个任务后再继续执行。 JUC闭锁在Android…

异步模式之工作线程

目录 定义 饥饿 创建多少线程池合适 CPU 密集型运算 I/O 密集型运算 定义 让有限的工作线程&#xff08;Worker Thread&#xff09;来轮流异步处理无限多的任务。也可以将其归类为分工模式&#xff0c;它的典型实现 就是线程池&#xff0c;也体现了经典设计模式中的享元模…

ReentrantLock 底层原理

目录 一、ReentrantLock入门 二、AQS原理 1、AQS介绍 2、自定义锁 三、ReentrantLock实现原理 1、非公平锁的实现 加锁流程 释放锁流程 2、可重入原理 3、可打断原理 4、公平锁原理 5、条件变量原理 await流程 signal流程 一、ReentrantLock入门 相对于synchron…

AQS源码分析——以ReentrantLock为例

AQS自身属性&#xff1a; private transient volatile Node head; private transient volatile Node tail; private volatile int state; Node属性&#xff1a; // 共享 static final Node SHARED new Node(); // 独占 static final Node EXCLUSIVE null; // 线程被…

多线程JUC:多线程的实现和常用成员方法(守护、礼让、插入线程)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;首期文章 &#x1f4da;订阅专栏&#xff1a;多线程&JUC 希望文章对你们有所帮助 JUC的学习也是需要一些计算机、操作系统的…

并发编程中的原子性,可见性,有序性问题

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章是关于并发编程中出现的原子性&#xff0c;可见性&#xff0c;有序性问题。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适合复习中&am…

Synchronized 锁升级过程

Synchronized 锁升级过程 自己之前写的一篇 Synchronized 的博客&#xff1a;https://blog.csdn.net/Sherlook_Holmes/article/details/128584655 Synchronized 一开始的性能并不好&#xff0c;是 jdk 6 之后&#xff0c;对 Synchronized 进行了优化&#xff0c;才有了偏向锁、…

Java多线程:定位死锁

检测死锁可以使用jconsole工具&#xff0c;或使用jps定位进程id&#xff0c;再用jstack定位死锁 方案1&#xff1a; 1. 先用jps查看所有的java进程id 2. jstack 进程id定位死锁 3. 查看死锁结果 方案2:从jdk的安装路径中找到bin目录, 点击jconsole

JUC 类(ConcurrentHashMap ,CopyOnWriteArrayList,CopyOnWriteArraySet ,辅助类)ReentrantLock和Synchronized

JUC 类 hashMap是线程不安全的不能并发操作 hashTable是线程安全的有synchronized修饰,将锁直接加到put()上,效率低,相当于吧整个hash表锁住了,用在低并发情况下可以,独占锁 ConcurrentHashMap ConcurrentHashMap 是线程安全的,采用锁分段机制,并没有将整个hash表锁住,但是…

ReentrantReadWriteLock的readerShouldBlock与apparentlyFirstQueuedIsExclusive 深入理解读锁的非公平实现

文章目录前言writerShouldBlock的非公平实现readerShouldBlock的非公平实现写锁无限等待 indefinite writer starvationheuristic启发式地防止new reader总结前言 在ReentrantReadWriteLock的读锁或写锁的获取过程中&#xff0c;在CAS修改同步器状态之前&#xff0c;会使用rea…

ReentrantLock原理

实现了Lock接口 内部也维护了一个同步器Sync继承自AQS&#xff0c;Sync是抽象的&#xff0c;两个实现NonFairSync和FairSync public ReentrantLock() {sync new NonfairSync(); } public ReentrantLock(boolean fair) {sync fair ? new FairSync() : new NonfairSync(); }非…

JUC基础-0531

3 线程间通信 线程间通信的模型有两种:共享内存和消息传递&#xff0c;以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析 多线程编程步骤&#xff1a; 第一步&#xff1a;创建资源类&#xff0c;在资源类创建属性和操作方法第二步&#xff1a;在资源…

系列二、Lock接口

一、多线程编程模板 线程 操作 资源类 高内聚 低耦合 二、实现步骤 1、创建资源类 2、资源类里创建同步方法、同步代码块 三、12306卖票程序 3.1、synchronized实现 3.1.1、Ticket /*** Author : 一叶浮萍归大海* Date: 2023/11/20 8:54* …

JUC高级二: Java锁(上篇)

JUC高级二: Java锁(上篇) 1. 乐观锁和悲观锁 synchronized关键字和Lock的实现类都是悲观锁 悲观锁: 认为自己在使用数据的时候一定有别的线程来修改数据&#xff0c;因此在获取数据的时候会先加锁&#xff0c;确保数据不会被别的线程修改。 适合写操作多的场景,先加锁可以保证…

JUC高级九-Synchronized与锁升级

1. synchronized 锁优化的背景 用锁能够实现数据的安全性&#xff0c;但是会带来性能下降。无锁能够基于线程并行提升程序性能&#xff0c;但是会带来安全性下降。 为求平衡将synchronized优化为不在是无所和重锁两个状态,新增偏向锁和轻量级锁来平衡安全性和性能问题 synchro…

【JUC-4】线程池实战应用

线程池 线程池创建方式 Executors创建线程池(不推荐) JDK提供的工具类Execurtors创建线程池(不推荐), 列举几个Executors中创建线程池的方法; 查看Executors的源代码发现, 它创建线程池也是通过 new ThreadPoolExecutor() 来创建线程池的. 当然其中有一些特殊的线程池也不是…

CAS 产生的 ABA 问题是什么?怎么解决?

CAS 产生的 ABA 问题是什么&#xff1f;怎么解决&#xff1f; CAS操作可能会出现ABA问题&#xff0c;所谓ABA问题是指在执行CAS操作时&#xff0c;由于CAS操作只对值进行比较&#xff0c;不考虑值的版本等其它附加信息&#xff0c;因此可能导致某个线程误认为成功地将值从A修改…

JUC并发编程学习笔记一

一、尚硅谷B站视频地址&#xff1a; 21_CompletableFuture之电商比价大厂案例编码实战-上集_哔哩哔哩_bilibili 二、动力节点B站视频地址&#xff1a; 1-4 锁的相关概念_哔哩哔哩_bilibili 对应部分在线讲义&#xff1a;Java多线程编程 - 动力节点 三、CSDN文档 Java线程池…

Java 多线程(一):基础

Java 多线程&#xff08;一&#xff09;&#xff1a;基础 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Java 多线程&#xff08;一&#xff09;&#xff1a;基础 CSDN&#xff1a;Java 多线程&#xff08;一&#xff09;&#xff1a;基础 顺序、并行与并…

看完多线程通透了(爆干4万字)

文章目录&#x1f492; 多线程&#x1f68f; 线程的简介&#x1f680; 普通方法调用和多线程&#x1f684; 程序、进程与线程&#x1f692; Program和Process与Thread &#xff08;程序、进程与线程&#xff09;&#x1f6a4; 核心概念&#x1f697; 并行与并发&#x1f68f; 多…

《JUC》万万万万字长文解析!

JUC 四万字长文解析 juc&#xff0c;涵盖线程、内存模型、锁、线程池、原子类、同步器、并发容器、并发编程模式、并发编程应用等。 版本: jdk: 11spring boot: 2.7.0 JUC 是 java.util.concurrent 包的缩写&#xff0c;是 java 提供的用来并发编程的工具包。juc 提供了多种用…

JUC并发编程与源码分析笔记12-Synchronized与锁升级

先从阿里及其他大厂面试题说起 谈谈对synchronized的理解聊聊synchronized的锁升级 本章路线总纲 用锁能够实现数据安全性&#xff0c;但是会带来性能下降&#xff0c;无锁能够基于线程并行提升程序性能&#xff0c;但会带来安全性下降。 锁升级的过程&#xff1a;无锁→偏向…

并发容器(Map、List、Set)实战及其原理

一. JUC包下的并发容器 Java的集合容器框架中&#xff0c;主要有四大类别&#xff1a;List、Set、Queue、Map&#xff0c;大家熟知的这些集合类ArrayList、LinkedList、HashMap这些容器都是非线程安全的。 所以&#xff0c;Java先提供了同步容器供用户使用。 同步容器可以简单地…

【线程池】线程池的ctl属性详解

目录 一、ctl介绍 二、线程池ctl源码 三、线程池ctl分析 1、private static int ctlOf(int rs, int wc) { return rs | wc; } 2、private final AtomicInteger ctl new AtomicInteger(ctlOf(RUNNING, 0)); 3、private static int runStateOf(int c) { return c &am…

并发编程ReentrantReadWriteLock 和 StampLock详解

并发编程ReentrantReadWriteLock 和 StampLock详解 1. 为什么需要读写锁&#xff1f;1.1 读写锁介绍 2. 如何设计一把读写锁&#xff1f;重点&#xff1a;如何保证读写互斥&#xff1f;如何维护两个状态&#xff1f;如果要实现可重入&#xff0c;如何做&#xff1f;写锁读锁 3.…

【JUC】七、读写锁

文章目录 1、读写锁2、读写锁的体验3、读写锁的特点4、锁的演变5、读写锁的降级6、复习&#xff1a;悲观锁和乐观锁 1、读写锁 JUC下的锁包的ReadWriteLock接口&#xff0c;以及其实现类ReentrantReadWriteLock ReadWriteLock 维护了一对相关的锁&#xff0c;即读锁和写锁&…

系列一、JUC概述

一、概述 juc是java.util.concurrent在并发编程中使用的工具类。 二、进程 & 线程 2.1、进程概述 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元&#xff0c;在传统的操作系统中&#xff0c;进程既是基本的分配单元&a…

JUC-0531

3 线程间通信 线程间通信的模型有两种:共享内存和消息传递&#xff0c;以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析 多线程编程步骤&#xff1a; 第一步&#xff1a;创建资源类&#xff0c;在资源类创建属性和操作方法第二步&#xff1a;在资源…

JUC/多线程的基本使用(一)

一、基本使用 Thread、Runnable、FutureTask Java多线程-CSDN博客https://blog.csdn.net/m0_71534259/article/details/132381495?spm1001.2014.3001.5501 二、查看进程线程的方法 windows 任务管理器可以查看进程和线程数&#xff0c;也可以用来杀死进程 tasklist 查看…

AQS基本

park和unpark LockSupport.park();// 暂停当前线程 LockSupport.unpark(暂停线程对象);// 恢复某个线程的运行unpark也可以在park之前调用,调用之后,对应的线程中如果后面执行了park,并不会停止 // 原理 每个线程都会关联一个Parker对象,Parker对象由三部分组成(_counter,_con…

JUC高级-0625

13. AbstractQueuedSynchronized之AQS 13.1 前置知识 公平锁和非公平锁可重入锁自旋思想LockSupport数据结构之双向链表设计模式之模板设计模式 13.2 AQS入门级别理论知识 AQS是什么&#xff1f; 字面意思&#xff1a;抽象的队列同步器&#xff0c;实现了通知唤醒的机制源代…

【juc】字段更新器

目录 一、说明二、代码示例 一、说明 1.利用字段更新器可以针对对象的域&#xff08;Field&#xff09; 2.只能配合volatile修饰的字段使用&#xff0c;否则会出异常Exception in thread “main” java.lang.IllegalArgumentException: Must be volatile type 3.常见有AtomicRe…

JUC-01 线程的创建和状态转换

本次我们主要讲三个问题 线程是什么&#xff1f;线程有哪些状态&#xff1f;各状态间的转换了解吗&#xff1f;创建线程的3种方法你都了解吗&#xff1f; 1. 线程是什么&#xff1f;&#xff08;了解即可&#xff09; 进程&#xff1a; 进程是一个具有一定独立功能的程序在一…

【JUC】十、ForkJoin

文章目录 1、分支合并框架2、案例3、ForkJoinTask4、工作窃取算法5、ForkJoinPool 一个个任务执行在一个个线程上&#xff0c;倘若某一个任务耗时很久&#xff0c;期间其他线程都无事可做&#xff0c;显然没有利用好多核CPU这一计算机资源&#xff0c;因此&#xff0c;出现了&q…

从源码全面解析 synchronized 关键字的来龙去脉

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…

Spring入门【下】

Spring入门【三】 以转账为案例。 一、转账编码 1、引入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency><dependenc…

Java线程:活锁

1、什么是活锁 活锁是指&#xff0c;线程没有发生阻塞&#xff0c;但依然执行不下去的情况。 2、活锁的例子 如果两个线程互相改变对方的结束条件&#xff0c;就可能导致双方谁也无法结束。 比如这个程序&#xff1a; public class TestLiveLock {static volatile int cou…

Java JUC概述

Java JUC&#xff08;Java Util Concurrent&#xff09;是 Java 平台提供的并发编程工具包&#xff0c;它提供了一系列的工具类和接口&#xff0c;用于简化多线程编程。JUC 中的类和接口都是基于 Java 平台的底层并发原语&#xff08;如锁、信号量、原子变量等&#xff09;实现…

Java线程通信(面试题)

线程通信 1.线程通信涉及到的三个方法&#xff1a; wait():一旦执行此方法&#xff0c;当前线程就进入阻塞状态&#xff0c;并释放同步监视器。调用此方法后&#xff0c;当前线程将释放对象监控权 &#xff0c;然后进入等待notify():一旦执行此方法&#xff0c;就会唤醒被wai…

手把手讲解AQS源码

手把手讲解AQS源码 一、概述 ​ 本文将会通过ReentrantLock为例&#xff0c;带大家看一下AQS的源码&#xff0c;其实并不难&#xff0c;下面是一个公平锁的小案例&#xff0c;大家可以自己跑一下感受一下。下面将会带大家一点一点阅读源码&#xff0c;认真看下来你就会发现其…

使用CompletionService进行多个文件打包为zip下载

最近没怎么写博客了&#xff0c;因为前段时间在准备软考复习&#xff0c;昨天考完试&#xff0c;现在总算轻松一点了&#xff0c;有更多自由的时间了&#xff0c;总结一下JUC包下的一些并发工具类&#xff0c;主要是从使用场景入手。 CompletionService可以用于实现任务并行化…

JUC-0530

1. JUC概念 1.1 JUC 简介 在 Java 中&#xff0c;线程部分是一个重点&#xff0c;本篇文章说的 JUC 也是关于线程的。JUC 就是 java.util.concurrent 工具包的简称。这是一个处理线程的工具包&#xff0c;JDK 1.5 开始出现的。 1.2 进程与线程 进程(Process) 是计算机中的程…

自己手写一个简易版本的线程池【Java】【详细注解,含思考过程和知识点】

Slf4j public class Test15 {public static void main(String[] args) {ThreadPool pool new ThreadPool(1, 1000, TimeUnit.MILLISECONDS, 1, (taskQueue, task) -> {// 这里实现自己的拒绝策略// 死等 // taskQueue.put(task);// 带超时时间的阻塞添加taskQue…

JUC第十三讲:JUC锁: ReentrantLock详解

JUC第十三讲&#xff1a;JUC锁: ReentrantLock详解 本文是JUC第十三讲&#xff0c;JUC锁&#xff1a;ReentrantLock详解。可重入锁 ReentrantLock 的底层是通过 AbstractQueuedSynchronizer 实现&#xff0c;所以先要学习上一章节 AbstractQueuedSynchronizer 详解。 文章目录 …

Java并发-06-AQS(AbstractQueuedSynchronizer)相关

1-概述 AQS全称是 AbstractQueuedSynchronizer&#xff0c;是阻塞式锁和相关的同步器工具的框架。同步器的设计是基于模板方法模式的&#xff0c;也就是说&#xff0c;使用者需要继承同步器并重写指定的方法&#xff0c;随后将同步器组合在自定义同步组件的实现中&#xff0c;并…

对于ThreadLocal的理解

对于ThreadLocal的理解什么是ThreadLocalThreadLocal的使用场景1.线程隔离2.跨函数传值正确使用感想什么是ThreadLocal 在Java的多线程并发执行的过程中&#xff0c;为了保证多个线程对变量的安全访问&#xff0c;可以将变量放到ThreadLocal类型的对象中&#xff0c;是变量在每…

并发编程之 sleep 与 yield的详细解析

3.7 sleep 与 yield sleep 调用 sleep 会让当前线程从 Running 进入 Timed Waiting 状态&#xff08;阻塞&#xff09; 其它线程可以使用 interrupt 方法打断正在睡眠的线程&#xff0c;这时 sleep 方法会抛出 InterruptedException public static void main(String[] args) …

请你谈谈你对JUC的理解(含JUC知识体系图)

请你谈谈你对JUC的理解 一、前言感悟二、并发知识三、一年前回答四、补充体系回答五、补充层次回答六、碎碎念 一、前言感悟 当我们在谈一个技术的时候&#xff0c;不要过多的陷入技术本身&#xff0c;我们需要明白技术是服务业务的。今天的我们需要以一个更为广阔的视角去看待…

并发编程之读写锁ReadWriteLock的详细解析(带小案例)

读写锁ReadWriteLock lock锁&#xff0c;只允许一个进程进行读/写 使用ReadWriteLock读写锁&#xff0c;可以实现控制&#xff1a; 多个线程同时读 同一时间只允许一个线程写 下面的demo展示的是&#xff0c;当多个线程要进行同时写操作时&#xff0c;没有加锁的情况&#xf…

Java并发编程学习笔记:AQS

Java并发编程学习笔记&#xff1a;AQS 一、底层原理核心功能同步状态管理CLH 队列和线程调度机制独占模式与共享模式模板方法设计模式自旋、阻塞与超时机制 运行流程 二、锁的公平性公平锁非公平锁 三、容器实现 JUC中的AQS&#xff08;AbstractQueuedSynchronizer&#xff09;…

Java并发编程学习笔记:ThreadLocal

Java并发编程学习笔记&#xff1a;ThreadLocal 一、ThreadLocal二、ThreadLocalMap三、内存泄漏四、场景应用 一、ThreadLocal ThreadLocal的主要作用是为每个线程提供一个独立的变量副本&#xff0c;这样在多线程环境下&#xff0c;每个线程可以拥有自己的变量值&#xff0c;…

剑指JUC原理-20.并发编程实践

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

【juc】cyclicbarrier人数凑齐发车

目录 一、截图示例二、代码示例 一、截图示例 二、代码示例 package com.learning.cyclicbarrier;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;/*** …

【线程池】线程池的拒绝策略(饱和策略)

目录 一、总结 二、拒绝策略源码分析 2.1 AbortPolicy 2.2 DiscardPolicy 2.3 DiscardOldestPolicy 2.4 CallerRunsPolicy 2.5 自定义 三、执行拒绝策略 一、总结 如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任务时&#xff0c;ThreadPoolTaskE…

程序员的护城河-并发编程

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

CountDownLatch和CyclicBarrier

CountDownLatch 线程同步协作&#xff0c;await等待其他所有线程完成倒计时后&#xff0c;恢复运行 state的初始值为count 内部维护了一个AQS同步器&#xff0c;每次countDown后&#xff0c;会进行CAS修改state减1&#xff0c;修改后state为0&#xff0c;则唤醒被阻塞的线程 …

volatile底层-CPU缓存一致性协议MESI

目录 volatile底层-CPU缓存一致性协议MESI CPU高速缓存&#xff08;Cache Memory&#xff09; 带有高速缓存的CPU执行计算的流程 目前流行的多级缓存结构 多核CPU多级缓存一致性协议MESI MESI协议缓存状态 MESI状态转换 多核缓存协同操作 ​编辑单核读取 双核读取 修…

优雅的写出线程t1, t2, t3分别交替输出5次 a, b, c。三种写法,a.waitnotify b.awaitsignal c.parkunpark

public class Test9 {static Object lock new Object();static int num 1;static int loopNum 5;/*** 线程t1, t2, t3分别交替输出 a, b, c > 最终输出 abcabcabcabcabc**/public static void main(String[] args) throws InterruptedException {Thread t1 new Thread((…

CountDownLatch、CyclicBarrier和 Semaphore

CountDownLatch、CyclicBarrier和 Semaphore 简介 CountDownLatch、CyclicBarrier和 Semaphore是J.U.C中的三个辅助类&#xff0c;大致功能如下&#xff1a; CountDownLatch可以实现线程A等待其他多个线程执行完后再继续执行。 CyclicBarrier可以实现一组线程等待至某个状态后再…

AQS同步队列和等待队列的同步机制

理解AQS必须要理解同步队列和等待队列之间的同步机制&#xff0c;简单来说流程是&#xff1a; 获取锁失败的线程进入同步队列&#xff0c;成功的占用锁&#xff0c;占锁线程调用await方法进入条件等待队列&#xff0c;其他占锁线程调用signal方法&#xff0c;条件等待队列线程进…

JUC系列(六) 线程池

&#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; ☀️☀️你好啊&#xff01;小伙伴&#xff0c;我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 &#x1f4d2; 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️&#xff0c;擅…

JUC并发编程之ForkJoin框架原理解析

目录 JUC并发编程之ForkJoin框架原理解析 CPU密集型&#xff08;CPU-bound&#xff09; IO密集型&#xff08;I/O bound&#xff09; CPU密集型 vs IO密集型 Fork/Join 框架概念 工作窃取算法 总结 JUC并发编程之ForkJoin框架原理解析 CPU密集型&#xff08;CPU-bound&…

共享内存之不可变

目录 一、不可变设计 二、享元模式 三、final原理 一、不可变设计 String是怎么保证不可变的&#xff1f; 首先String类里面有个char数组value&#xff0c;是用final修饰的&#xff0c;所以只有在构造的时候能给他赋值&#xff0c;以后就没机会改变他的引用了。 有个变量…

Java多线程(JUC)原理

一、JUC的技术优势 1、提高应用程序的响应。对图形化界面更有意义&#xff0c;可增强用户体验。 2、提高计算机系统CPU的利用率 3、改善程序结构。将既长又复杂的进程分为多个线程&#xff0c;独立运行&#xff0c;利于理解和修改 4、使用线程可以将耗时任务放到后台去处理&am…

深入理解CPU密集型与IO密集型任务、线程池如何选择?

目录 1、理解什么是CPU密集型与IO密集型 1.1 CPU密集型 概念解释 策略 1.2 I/O密集型 概念解释 策略 2、《Java并发编程实践》&#xff1a;具体的线程数该如何设置&#xff1f;线程池参数如何设置&#xff1f; 参数解释 3、总结 1、理解什么是CPU密集型与IO密集型 1.…

ConcurrentHashMap的使用介绍和底层原理解析和开源框架的使用实例

文章目录 ConcurrentHashMap的使用介绍和底层原理解析和开源框架的使用实例1. ConcurrentHashMap介绍2. ConcurrentHashMap底层原理3. ConcurrentHashMap主要方法- put(K key, V value):添加元素。4. 总结5. 框架中的应用6. 操作技巧7. 运维部署(生产环境注意事项)8. Concurren…

JUC高级八-Java对象内存布局和对象头

JUC高级八-Java对象内存布局和对象头 1. 对象的内存布局 在HotSpot虚拟机里&#xff0c;对象在堆内存中的存储布局可以划分为三个部分:对象头(Header&#xff09;、实例数据&#xff08;Instance Data&#xff09;和对齐填充(Padding)&#xff08;保证8个字节的倍数&#xff…

Java线程的同步机制(synchronized关键字)

线程的同步机制(synchronized ) 1.背景 例子&#xff1a;创建个窗口卖票&#xff0c;总票数为100张.使用实现Runnable接口的方式 * 1.问题&#xff1a;卖票过程中&#xff0c;出现了重票、错票 -->出现了线程的安全问题2.问题出现的原因&#xff1a;当某个线程操作车票的过…

Java 关键字:synchronized详解

synchronized详解 基本使用源码解析常见面试题好书推荐 基本使用 Java中的synchronized关键字用于在多线程环境下确保数据同步。它可以用来修饰方法和代码块 当一个线程访问一个对象的synchronized方法或代码块时&#xff0c;其他线程将无法访问该对象的其他synchronized方法或…

系列九、JUC强大的辅助类

一、CountDownLatch 1.1、概述 让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒 1.2、功能 CountDownLatch主要有两个方法&#xff0c;当一个或多个线程调用await方法时&#xff0c;这些线程会阻塞&#xff0c;其它线程调用countDown方法会将计数器减1(调用countDown方…

JUC并发编程 04——Java内存模型之JMM

一.CPU 缓存模型 为什么要弄一个 CPU 高速缓存呢&#xff1f; 类比我们开发网站后台系统使用的缓存&#xff08;比如 Redis&#xff09;是为了解决程序处理速度和访问常规关系型数据库速度不对等的问题。 CPU 缓存则是为了解决 CPU 处理速度和内存处理速度不对等的问题。 我们…

JUC基石——Unsafe类

前言 我们经常在JUC包下的ConcurrentHashMap、Atomic开头的原子操作类、AQS以及LockSupport里面看到Unsafe类的身影&#xff0c;这个Unsafe类究竟是干什么的&#xff0c;本文可以带着读者一探究竟。 Java和C、C语言的一个重要区别&#xff0c;就是Java中我们无法直接操作一块内…

【JUC系列-06】深入理解Semaphore底层原理和基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

JUC第十五讲:JUC集合-ConcurrentHashMap详解(面试的重点)

JUC第十五讲&#xff1a;JUC集合-ConcurrentHashMap详解 本文是JUC第十五讲&#xff1a;JUC集合-ConcurrentHashMap详解。JDK1.7之前的ConcurrentHashMap使用分段锁机制实现&#xff0c;JDK1.8则使用数组链表红黑树数据结构和CAS原子操作实现ConcurrentHashMap&#xff1b;本文…

【java 高并发编程之JUC】2w字带你JUC从入门到精通

点击查看脑图目录地址,实时更新 1 什么是 JUC 1.1 JUC 简介 在 Java 中&#xff0c;线程部分是一个重点&#xff0c;本篇文章说的 JUC 也是关于线程的。JUC 就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包&#xff0c;JDK 1.5 开始出现的。 1.2 进程与…

JUC之Java内置锁的核心原理

文章目录 JUC之Java内置锁的核心原理Java对象结构对象头对象体对齐字节 Mark Word的结构信息64位Mark Word的构成 偏向锁偏向锁的设置偏向锁的重偏向偏向锁的撤销偏向锁的膨胀 轻量级锁执行过程轻量级锁的分类普通自旋锁自适应自旋锁 重量级锁偏向锁、轻量级锁与重量级锁的对比…

java基础之JUC中的list,set,map的安全类

前面一篇我们讲到了lock使用&#xff0c;但是有没有发现其引入发包位置&#xff1a;java.util.concurrent。 为什么要单独说这个包&#xff0c;因为这个包下的一些方法我们简称为juc&#xff0c;这是一个工具包&#xff0c;而且最重要的是处理多线程的一个工具包&#xff0c;可…

剑指JUC原理-13.线程池

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

JUC系列(一二):线程基础、生产与消费模型、8锁问题

发现 学习狂神JUC系列少了开篇 特此补发 线程与进程 线程、进程、如何来解释 进程 &#xff1a; 一个程序 如 QQ.exe Music.exe 程序的集合 一个进程可以包含多个线程&#xff0c;至少包含一个线程 Java 默认是开启两个线程 main GC 线程&#xff1a; 开了一个进程 比如&…

系列七、线程8锁

一、锁一 1.1、资源类Phone1 /*** Author : 一叶浮萍归大海* Date: 2023/11/20 14:03* Description: 资源类*/ public class Phone1 {/*** 发短信*/public synchronized void sendMessage() {System.out.println(">sendMessage");}/*** 发邮件*/public synchron…

【并发编程】JUC原子操作类

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程⛺️稳重求进&#xff0c;晒太阳 原子操作类 原子基本数据类型原子数组原子引用类型原子更新字段类型 原子基本数据类型 AtomicBooleanAtomicIntegerAtomicLong 以 AtomicInteg…

Java多线程之CAS中的ABA问题与JUC的常见类

文章目录一. CAS指令与ABA问题1. 解析CAS2. 基于CAS实现的原子类3. 基于CAS实现自旋锁4. ABA问题二. JUC中的常见类1. Callable接口2. ReentrantLock类(可重入锁)3. Semaphore类(信号量)4. CountDownLatch同步工具类一. CAS指令与ABA问题 1. 解析CAS CAS即compare and awap, …

Java——聊聊JUC中的原子变量类

文章目录&#xff1a; 1.什么是原子变量类&#xff1f; 2.AtomicInteger&#xff08;基本类型原子变量类&#xff09; 3.AtomicIntegerArray&#xff08;数组类型原子变量类&#xff09; 4.AtomicMarkableReference&#xff08;引用类型原子变量类&#xff09; 5.AtomicInteger…

【并发编程】线程安全

线程安全 1. 讲一下 synchronized 关键字的底层原理 1.1 基本使用 如下抢票的代码&#xff0c;如果不加锁&#xff0c;就会出现超卖或者一张票卖给多个人 synchronized&#xff0c;同步【对象锁】采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】 其它线程再想获…

【Java】简析ThreadPoolExecutor execute和BlockQueue

从源码看ThreadPoolExecutor execute和BlockQueue 文章目录从源码看ThreadPoolExecutor execute和BlockQueueJDK版本需要用到的知识点位运算线程池原理线程池的五种状态RUNNINGSHUTDOWNSTOPTIDYINGTERMINATED线程池五种状态的二进制表示ThreadPoolExecutor解读构造函数解读执行…