juc
  • 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
  • 2024-06-19JUC并发编程第十四章——线程安全集合类
    1 并发集合1.1 线程安全集合分类a.遗留的线程安全集合遗留的线程安全集合如Hashtable,Vectorb.使用Collections装饰的线程安全集合使用Collections装饰的线程安全集合,如:Collections.synchronizedCollectionCollections.synchronizedListCollections.synchroni
  • 2024-06-15【JUC】8-CompletableFutrue的常用方法
    1、获得结果和触发计算获得结果1publicTget()23publicTget(longtimeOut,Timeunitunit)45publicTjoin()67publicgetNow(TvalueIfAbsent)主动触发计算publicbooleancomplete(Tvalue) 2、对计算结果进行处理计算结果存在依赖关系,这两个线程串
  • 2024-06-14Java最全知识脑图 涵盖 juc mysql git mybatis 等 面试必备
    Java初中级知识脑图面试超实用1.Git下载链接导图下载地址:https://mm.edrawsoft.cn/mobile-share/index.html?uuid=31d00742157057-src&share_type=12.JUC下载链接https://mm.edrawsoft.cn/mobile-share/index.html?uuid=6c0be457444921-src&share_type=13.JVM下载链
  • 2024-06-13JUC并发编程第十二章——AQS
    1前置知识公平锁和非公平锁公平锁:锁被释放以后,先申请的线程先得到锁。性能较差一些,因为公平锁为了保证时间上的绝对顺序,上下文切换更频繁非公平锁:锁被释放以后,后申请的线程可能会先获取到锁,是随机或者按照其他优先级排序的。性能更好,但可能会导致某些线程永远无法获取到锁
  • 2024-06-13JUC并发编程第十一章——Synchronized与锁升级机制
    1入门知识介绍synchronized锁,是不是默认实现了锁升级。代码中只需要直接使用synchronized,至于怎么从偏向锁升级为轻量锁再升级为重量级锁,这些底层jvm已经实现了。不需要程序员担心。是的,Java8中的synchronized关键字确实默认实现了锁升级的机制。当使用synchronized关键
  • 2024-06-12【JUC】7-CompletableFutrue的应用 大厂案例分析 -电商比价
    1.需求说明1.1同一款产品,同时搜索出同款产品在各大电商平台的售价;1.2同一款产品,同时搜索出本产品在同一个电商平台下,各个入驻卖家售价是多少;2.输出返回:出来结果希望是同款产品的在不同地方的价格清单列表,返回一个List<String>《Mysql》injdpriceis88.05《Mysql》in
  • 2024-06-10JUC及多线程,线程安全
    JUC及多线程返回到Java开发知识汇总目录@程序员猴哥1.什么是JUCjava.util.concurrent:核心并发工具类。java.util.concurrent包含了许多线程安全,测试良好,高性能的并发模块。创建java.util.concurrent的目的就是要实现Collection框架对数据结构所执行的并发操作。核心
  • 2024-06-05【JUC】6-CompletableFutrue 的4个核心静态方法
    CompletableFutrue通过核心的4个静态方法,来创建一个异步任务publicstaticCompletableFuture<Void>runAsync(Runnablerunnable)1/**2*publicstaticCompletableFuture<Void>runAsync(Runnablerunnable)不指定线程池,默认使用ForkJoinPool.commonPool3*
  • 2024-06-05【JUC】5-CompletableFutrue对Futrue的改进
    get()方法在Futrue计算完成之前会一直处在阻塞状态下,isDeone()方法容易耗费CPU资源,对于真正的异步处理我们希望是可以通过传入回调函数,在Futrue结束时自动调用该回调函数,这样,我们就不用等待结果。 阻塞的方式和异步编程的设计理念相违背,而轮询的方式会耗费无谓的CPU资源。因
  • 2024-06-05【JUC】4-FutrueTask结合线程池的应用
    1、通过线程池提交FutrueTask异步任务1publicstaticvoidmain(String[]args)throwsExecutionException,InterruptedException,TimeoutException{23longstart=System.currentTimeMillis();4ExecutorServiceexecutorService=Executors.n
  • 2024-06-05【JUC】1-Java线程的启动
    以Thread创建线程为例:1Threadthread=newThread(){2@Override3publicvoidrun(){4log.info("createandstartathreadthroughcreatingaThreadObject");5}6};7thread.start();
  • 2024-06-02【JUC】3-用户线程和守护线程
    一般情况下不做特别说明配置,默认都是用户线程 UserThread是系统的工作线程,它会完成这个程序需要完成的业务操作 DaemonThread是一种特殊的线程,为其它线程服务的,在后台默默的完成一些系统性的服务,比如垃圾回收线程就是最典型的例子守护线程作为一个服务线程,没有服务对象
  • 2024-06-02【JUC】2-一把“锁”两个“并”三个“程”(JAVA多线程相关概念)
    1、一把锁(synchronized)2、两个并(并发并行)并发是在同一实体上的多个事件,是在一台处理器上同时处理多个任务,同一时刻,其实是只有一个时间在发生并行是在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一时刻,大家真的都在做事情,互不影响3、三个程(进程线程管程)进程
  • 2024-05-31JUC并发编程第六章——volatile与JMM
    1被volatile修饰的变量有两大特点特点:可见性有序性:有排序要求,有时需要禁重排内存语义:当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,重新回到主内存中读取最新共享
  • 2024-05-30JUC并发编程第七章——CAS
    1原子类Java.util.concurrent.atomic2没有CAS之前多线程环境中不使用原子类保证线程安全i++(基本数据类型)常用synchronized锁,但是它比较重,牵扯到了用户态和内核态的切换,效率不高。publicclassT3{volatileintnumber=0;//读取publicintgetNum
  • 2024-05-27JUC框架(Semaphore、CountDownLatch、CyclicBarrier)
    文章目录Semaphore(信号量)Semaphore介绍Semaphore基本概念Semaphore使用场景Semaphore示例CountDownLatch(计数器/闭锁)CountDownLatch介绍CountDownLatch基本概念CountDownLatch使用场景CountDownLatch基本方法CountDownLatch示例CyclicBarrier(循环栅栏)Cyclic
  • 2024-05-27JUC框架(CAS、ATOMIC、AQS)
    文章目录CAS原理CAS源码示例分析CAS的特点(ABA)ABA问题循环时间长开销大只能保证一个共享变量的原子操作Jdk中`CAS`运用ATOMICAQSAQS简介AQS原理更多相关内容可查看CAS原理CAS(compareAndSwap)也叫比较交换,是一种无锁原子算法,其作用是让CPU将内存值更新为新值,但是
  • 2024-05-24Java JUC&多线程 基础完整版
    JavaJUC&多线程基础完整版目录JavaJUC&多线程基础完整版1、多线程的第一种启动方式之继承Thread类2、多线程的第二种启动方式之实现Runnable接口3、多线程的第三种实现方式之实现Callable接口4、多线的常用成员方法5、线程的优先级6、守护线程7、线程的让出8、线程插队9、同
  • 2024-05-14JUC 源码解析:lock锁与synchronized锁的区别
    JUC源码解析:lock锁与synchronized锁的区别本文使用jdk1.8Lock锁的使用注意事项要在finally块中释放锁。保障锁一定能被释放不要把加锁代码写进try块里。因为我们可能会自己实现Lock接口,在一些实现中,如果获取锁时发生了异常,可能导致锁被无故释放lock与synchroniz
  • 2024-05-11JUC源码解析:深入理解 volatile
    JUC源码解析:深入理解volatilevolatile的定义volatile的作用:保证可见性禁止指令重排序volatile可以被看作是轻量版的synchronized,volatile保证了多线程中共享变量的“可见性”,就是说,当volatile变量的值被修改时,其他线程能读取到被修改的变量值。如果volatile使用恰
  • 2024-05-07JUC源码解析:深入解读偏向锁
    JUC源码解析:深入解读偏向锁本文使用jdk8几种锁状态介绍先介绍一下锁状态吧看偏向锁这一栏,它的内存存储了线程ID和Epoch,这一点尤为关键,意味着偏向锁没有内存可以存储对象头的hashCode,而其他锁是有地方存的.。也就意味着,,当锁对象被隐式(父类)或显试调用了has