首页 > 编程语言 >你说你精通Java并发,那给我讲讲J.U.C吧

你说你精通Java并发,那给我讲讲J.U.C吧

时间:2023-03-18 21:47:25浏览次数:45  
标签:依赖 Java 讲讲 Unsafe 并发 模块

J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心。

Concurrent包下所有类底层都是依靠CAS操作来实现,而sun.misc.Unsafe为我们提供了一系列的CAS操作。

AQS框架是J.U.C中实现锁及同步机制的基础,其底层是通过调用 LockSupport .unpark()和 LockSupport .park()实现线程的阻塞和唤醒。

J.U.C的整个框架分为5个部分:tools、locks、collections、executor和atomic。

  • atomic:该部分主要是一些原子变量类,仅依赖于Unsafe,并且被其他模块所依赖。
  • locks:该部分下主要是关于锁及其相关类,仅依赖于Unsafe或内部依赖,并且被其他高级模块所依赖。
  • collections:该部分会依赖Unsafe和前两个基础模块,并且模块内部各个容器间相互较为独立,常用的集合类有:ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet、ArrayBlockingQueue、LinkedBlockingQueue
  • executor:这一部分的核心是线程池的运行原理,会依赖于前几个模块。
  • tools:这一部分主要应用在多线程间相互依赖执行结果场景,常用的类有CountDownLatch、CyclicBarrier、Semaphore、Executors。

 

参考:

 

标签:依赖,Java,讲讲,Unsafe,并发,模块
From: https://www.cnblogs.com/xfeiyun/p/17231869.html

相关文章

  • Java笔记(二):String类
    String代表的是Java中的字符串,String类⽐较特殊,它整个类都是被final修饰的,也就是说,String不能被任何类继承,任何修改String字符串的⽅法都是创建了⼀个新的字......
  • Java笔记(一):基础
    1.JDK和JRE的区别JDK(JavaDevelopmentKit)开发工具基本类库javac编译javap反编译javadoc运行环境JRE(JavaRuntimeEnvironment)3.Lambda表达式使......
  • 带你深入Java Log框架,彻底搞懂Log4J、Log4J2、LogBack,SLF4J
    最近系统被扫出来还在使用老旧的log4j,需要升级到最新的log4j。但是在升级的发现,Java相关的日志处理库有log4j,log4j2,slf4j和logback,初一看确实有点头大,那么区别是啥呢?......
  • Java三大版本。JDK、JRE、JVM
    JavaSE:标准版(桌面程序,控制台开发...)JavaME:嵌入式开发(手机,小家电...)JavaEE:E企业级开发(Web端,服务器开发...)JDK:javadevelopmentkitJava开发者工具JRE:javaruntimeen......
  • Java面试系列:基础知识点
    一、List、Set、Collection的区别 二、ArrayList和LinkedList的区别 三、HashMap和HashTable的区别TRANSLATEwithxEnglishArabicHebrewPolish......
  • java的流程控制-break continue
    breakcontinuebreak:在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break也在switch语句中使用) continue:在......
  • 谈谈Java面向对象设计的六大原则
    单一职责原则——SRP开闭原则——OCP里式替换原则——LSP依赖倒置原则——DIP接口隔离原则——ISP迪米特原则——LOD单一职责原则单一职责原则的定义是就一个类......
  • python并发编程
    1.协程示例1:importtimeimportasyncioasyncdefcrawl_page(url):print('crawling{}'.format(url))sleep_time=int(url.split('_')[-1])awaitasyncio.slee......
  • 谈谈你对Java中常用的几种线程池的理解
    为什么使用线程池为每个请求创建一个新线程的开销很大容易引起资源不足,造成浪费使用线程池的风险死锁、资源不足和线程泄漏。死锁当一组进程或线程中的每一个都在......
  • Java 中 栈结构的三种使用方式 最后一种效率最高
     1.最不推荐LinkedList<Integer>stack1=newLinkedList<>();stack1.addLast(1);stack1.addLast(2);stack1.addLast(3);while(!stack1.isEmpty()){System.out.......