Juc
  • 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框架
  • 2024-08-14【JUC】读写锁+邮戳锁
    文章目录关于锁的面试题简单聊聊ReentrantReadWriteLock是什么?锁的演变读写锁案例读写锁特点锁降级案例演示为什么设计锁降级(源码分析)邮戳锁StampedLock(比读写锁更快的锁)邮戳锁是什么?它是由饥饿问题引出StampedLock的特点乐观读模式Code演示传统的读写锁模式----读的
  • 2024-08-14JUC锁-AQS源码解读
    JUC锁-Java8中AbstractQueuedSynchronizer源码解读分析总体介绍AbstractQueuedSynchronizer概述在锁框架中,AbstractQueuedSynchronizer抽象类可以毫不夸张的说,占据着核心地位,它提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。所以很有必要好好
  • 2024-08-11jUC中的锁
    在JUC中可以使用synchronized关键字进行加锁如下所示Objectobject=newObject();synchronized(object){//TODO}synchronized关键字所加的锁是逐步升级的,顺序是无锁->偏向锁->轻量级锁->重量级锁、随着锁等级的提高,所带来的消耗也会越大。在介绍
  • 2024-07-28JUC并发编程:基于Condition实现一个阻塞队列
    Condition方法概述await():当前线程进入等待状态,直到被通知(siginal)或中断【和wait方法语义相同】。awaitUninterruptibly():当前线程进入等待状态,直到被通知,对中断不敏感。awaitNanos(longtimeout):当前线程进入等待状态直到被通知(siginal),中断或超时。awaitUnit
  • 2024-07-23锁的分类和JUC
    锁的分类乐观锁、悲观锁对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字是最典型的悲观锁。乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不
  • 2024-07-04JUC(java.util.concurrent)的常见类
    JUC(java.util.concurrent)的常见类Callable(这是一个interface接口)这个也是创建线程的一种方式Runnable能表示一个任务(run方法)返回:voidCallable也能表示一个任务(call方法)返回:一个具体的值,类型可以通过泛型参数来指定(Object)如果进行多线程操作,只是关心多线
  • 2024-07-02JUC工具类: Exchanger详解
    Exchanger是用于线程协作的工具类,主要用于两个线程之间的数据交换。@立刀旁目录#带着BAT大厂的面试问题去理解Exchanger#Exchanger简介#Exchanger实现机制#Exchanger源码解析#内部类-Participant#内部类-Node#核心属性#构造函数#核心方法-exchang
  • 2024-06-23JUC锁: 锁核心类AQS详解
    AbstractQueuedSynchronizer抽象类是核心,需要重点掌握。它提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。@立刀旁目录#带着BAT大厂的面试问题去理解#AbstractQueuedSynchronizer简介#AQS核心思想#AQS对资源的共享方式#AQS底层使用了模
  • 2024-06-20线程的6种状态(juc编程)
    1线程状态1.1状态介绍当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程状态被定义在了java.lang.Thread.State枚举类中,State枚举类的源码如下:publicclassT