- 2024-11-19JUC-阻塞队列
JUC-阻塞队列1、阻塞队列概述2、ArrayBlockingQueue阻塞队列2.1ArrayBlockingQueue架构图2.2ArrayBlockingQueue源码如有侵权,请联系~如有错误,也欢迎批评指正~1、阻塞队列概述阻塞队列在业务代码中可能较少使用,但是只要喜欢看源码的同学就会发现,阻塞队列使用的很
- 2024-11-16JUC的常见类
1.callable接口callable是一个interface,相当于把线程封装了一个“返回值”,方便程序员借助多线程的方式计算结果。callable接口和Runnable接口是并列关系,但是Runnable返回值是void重写的是run方法更注重执行的过程而不是结果,而callable重写的是call方法,call是有返回值的返回值
- 2024-11-16JUC---ThreadLocal原理详解
什么是ThreadLocal?通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢?JDK中自带的ThreadLocal类正是为了解决这样的问题。ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻
- 2024-11-16JUC---多线程下的数据共享(基于ThreadLocal的思考)
多线程下的数据共享(基于ThreadLocal的思考)起初实在写项目过程中,在完成超时订单自动取消的任务时,使用xxl-job,整个逻辑是需要从订单表中找出过期的订单,然后将其存入订单取消表。存入订单取消表时需要存储用户的信息。我最开始没想那么多,就直接从ThreadLocal中取出用户信息,但
- 2024-11-13JUC学习笔记
文章目录锁生产者消费者问题8锁现象集合类不安全Callable创建线程的三种方式常用辅助类CountDownLatchCyclibarrierSamphore本篇博客是之前学习JUC时记录的内容,对于并发编程知识只是浅浅谈及,并不深入。也算是给自己开新坑。建一个JUC的专栏,后续学习有地方记录。
- 2024-11-13JUC-locks锁
JUC-locks锁1、JUC-locks锁概述2、管程模型3、ReentrantLock可重入锁3.1ReentrantLock源码3.2Sync静态内部类3.3NonfairSync非公平锁3.4FairSync公平锁如有侵权,请联系~如有错误,也欢迎批评指正~1、JUC-locks锁概述java的并发包【JUC】下面就两个子包,一个是atom
- 2024-11-10一文彻底弄懂JUC工具包的Semaphore
Semaphore是Java并发包(java.util.concurrent)中的重要工具,主要用于控制多线程对共享资源的并发访问量。它可以设置“许可证”(permit)的数量,并允许指定数量的线程同时访问某一资源,适合限流、资源池等场景。下面从源码设计、底层原理、应用场景、以及与其它JUC工具的对比来详
- 2024-11-09一文彻底弄懂JUC工具包的CountDownLatch的设计理念与底层原理
CountDownLatch是Java并发包(java.util.concurrent)中的一个同步辅助类,它允许一个或多个线程等待一组操作完成。一、设计理念CountDownLatch是基于AQS(AbstractQueuedSynchronizer)实现的。其核心思想是维护一个倒计数,每次倒计数减少到零时,等待的线程才会继续执行。它的主要设
- 2024-11-05JUC容器
并发容器类这些类专为支持并发环境中的高效数据访问和操作而设计。与传统的容器类相比,并发容器类具有更好的线程安全性和性能。在使用多线程环境时,通常推荐使用这些并发容器以避免手动加锁和同步操作。ConcurrentHashMap特点:一个线程安全的哈希表,支持高效的并发访问。通过分
- 2024-11-04三个常见JUC辅助类
三个常见JUC辅助类1.减少计数(CountDownLatch)通过一个计数器来管理需要等待的线程数量,当这些线程都完成各自的任务后(即计数器递减到0),才会允许其他等待的线程继续执行。步骤:定义CountDownLatch类,并设置一个固定值在需要计数的位置加上countDown()方法使用await()
- 2024-10-31KuangStudy-juc
多线程进阶JUC1.什么是JUC三个包:java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks另外加上java.util.function2.线程和进程Java默认2个线程:main+GCJava可以开启线程吗?-不行->调用nativestart0()利用c++调用底层资源并发、并行并
- 2024-10-31juc复习(下篇)(10.31)
juc复习(10.31)阻塞队列写入:如果队列满了,就必须阻塞等待读取:如果队列是空的,必须阻塞等待生产使用阻塞队列的情况多线程并发处理,线程池四组API方式抛出异常有返回值不抛出异常阻塞等待超时等待添加addofferputoffer(3个参数)移除removepolltakepoll(两个参数)检测队首元素e
- 2024-10-29JUC并发编程1
JUC并发编程1.常见的加锁方式1.1synchronized关键字要求:多个线程并行执行,依次实现对数字的+1、-1操作。即一次+1、一次-1,依次执行。Share类classShare{privateintnumber=0;publicsynchronizedvoidincr()throwsInterruptedException{//
- 2024-10-26你了解JUC吗
1.什么是JUC1.1JUC简介JUC(JavaUtilConcurrent)是Java中的一个并发工具包,提供了一系列用于多线程编程的类和接口,旨在简化并发编程并提高其效率和可维护性。JUC库包含了许多强大的工具和机制,用于线程管理、同步和协调。1.2并发与并行并发和并行的区别1.并发早期计算
- 2024-10-16多线程&JUC的学习
1、什么是线程?进程:进程是程序的基本执行实体。一个软件运行之后就是一个进程。线程:是操作系统能够运行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。简单理解:应用软件中互相独立,可以同时运行的功能。2、多线程的作用? 提高效率。3、多线
- 2024-09-25【JUC并发编程系列】深入理解Java并发机制:阻塞队列详解与简单纯手写(七、BlockingQueue、ArrayBlockingQueue、LinkedBlocking)
文章目录【JUC并发编程系列】深入理解Java并发机制:阻塞队列详解与简单纯手写(七、BlockingQueue、ArrayBlockingQueue、LinkedBlocking)1.简单回顾1.1数组结构和链表结构1.1.1数组结构1.1.2链表结构1.2有界队列与无界队列1.3Lock锁使用回顾2.什么是阻塞队列3.B
- 2024-09-25【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、Volatile关键字、JMM、重排序、双重检验锁)
文章目录【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、Volatile关键字、JMM、重排序、双重检验锁)1.Volatile的特性2.Volatile的用法3.CPU多核硬件架构剖析4.JMM内存模型4.1主要特性4.2JMM的工作原理4.3实现机制5.JMM八
- 2024-09-25【JUC并发编程系列】深入理解Java并发机制:线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)
文章目录【JUC并发编程系列】深入理解Java并发机制:线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)1.基本API介绍2.简单用法3.应用场景4.Threadlocal与Synchronized区别5.内存溢出和内存泄漏5.2内存溢出(MemoryOverflow)5.2内存泄漏(Mem
- 2024-09-16JUC学习笔记(一)
文章目录一、进程与线程1.1进程与线程1)进程2)线程3)二者对比1.2并行与并发注意二、Java线程2.1创建和运行线程1)直接使用Thread2)使用Runnable配合Thread3)FutureTask配合Thread2.2查看进程线程的方法1)windows2)linux3)java2.3原理之线程运行栈与栈帧线程上下
- 2024-09-13【JUC】16-Java对象内存布局和对象头
1.对象的内存布局 在HotSpot虚拟机里,对象在堆内存中的存储布局可以分为三个部分:对象头、实例数据和对齐填充。对象头:由对象标记和类型指针。
- 2024-09-01JUC前置知识
JUC前置知识JUC概述在开发语言中,线程部分是重点,JUC是关于线程的。JUC是java.util.concurrent工具包的简称。这是一个处理线程的工具包,JDK1.5开始出现的。线程和进程线程和进程的概念进程(process):是计算机的程序关于某数据集合上的一次允许活动,是操作系统进行资源分配和任
- 2024-08-27【JUC并发编程系列】深入理解Java并发机制:从用户态到内核态的探索(一、前置知识)
文章目录【JUC并发编程系列】深入理解Java并发机制:从用户态到内核态的探索(一、前置知识)1.用户态与内核态区别2.线程安全同步的方式3.传统锁有哪些缺点4.发生CPU上下文切换的原因5.如何避免上下文切换6.详细总结6.1用户态与内核态6.2线程安全同步方式6.3传统锁的
- 2024-08-22JUC-Executor
1,Executor框架相关内容Executor框架主要包括三部分内容任务相关的:包含被执行的任务要实现的接口:Runnable接口或Callable接口任务的执行相关的:包含任务执行机制的核心接口Executor,以及继承自Executor的ExecutorService接口。Executor框架中有两个关键的类实现了ExecutorS
- 2024-08-22JUC-CompletableFuture 类
1.CompletableFuture简介在Java中CompletableFuture用于异步编程,异步编程是编写非阻塞的代码,运行的任务在一个单独的线程,与主线程隔离,并且会通知主线程它的进度,成功或者失败。在这种方式中,主线程不会被阻塞,不需要一直等到子线程完成。主线程可以并行的执行其他任务。使用这种
- 2024-08-21Java并发编程 - JUC介绍、JUC锁(公平锁、非公平锁、可重入锁/递归锁、自旋锁、ReentrantLock)
Java并发编程中的java.util.concurrent(简称JUC)包提供了许多高级并发工具和类,使得开发人员能够更加方便地编写高性能的并发程序。下面将详细介绍JUC包中的一些锁相关的概念和类。JUC介绍java.util.concurrent包提供了许多高级并发工具类,包括但不限于Executor框架