千家信息网

JUC类工具有哪些

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容主要讲解"JUC类工具有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JUC类工具有哪些"吧!JUC 是 java.util.concurre
千家信息网最后更新 2026年11月04日JUC类工具有哪些

本篇内容主要讲解"JUC类工具有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JUC类工具有哪些"吧!

JUC 是 java.util.concurrent 的缩写,其实现参考了 EDU.oswego.cs.dl.util.concurrent ,是 JSR 166 标准规范的一个实现;JSR 166 是一个关于 Java 并发编程的规范提案,在 JDK 中,该规范由java.util.concurrent 包实现。即JUC 是 Java 提供的并发包,其中包含了一些并发编程用到的基础组件。 JUC 这个包下的类基本上包含了我们在并发编程时用到的一些工具。大致可以分为以下几类:

  • 原子更新 Java 从 JDK1.5 开始提供了 java.util.concurrent.atomic 包,方便程序员在多线程环 境下,无锁的进行原子操作。在 Atomic 包里一共有 12 个类,四种原子更新方式,分别是原子更新基本类型,原子更新 数组,原子更新引用和原子更新字段。

  • 锁和条件变量 java.util.concurrent.locks 包下包含了同步器的框架 AbstractQueuedSynchronizer,基于 AQS 构建的 Lock 以及与 Lock 配合可以实现等待/通知模式的 Condition。JUC 下的大多数工具类用到了 Lock 和 Condition 来实现并发。

  • 线程池 涉及到的类比如:Executor、Executors、ThreadPoolExector、 AbstractExecutorService、Future、Callable、ScheduledThreadPoolExecutor等等。

  • 阻塞队列 涉及到的类比如:ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、LinkedBlockingDeque等等。

  • 并发容器 涉及到的类比如:ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、CopyOnWriteArraySet等等。

  • 同步器 剩下的是一些在并发编程中时常会用到的工具类,主要用来协助线程同步。比如:CountDownLatch、CyclicBarrier、Exchanger、Semaphore、FutureTask 等等。 在学习 JUC 之前我们需要了解 CAS,AQS 和 Unsafe,对于大部分初学并发编程的同学这几个概念容易在脑中混淆,所以先分别说说这几个概念。

Unsafe

Unsafe是位于sun.misc包下的一个类,也是一个不安全的类,为什么会这样说呢? Java 是一个非常安全的语言, 无法直接访问操作系统底层,而是通过本地方法进行访问,但却给 Unsafe 类开了"后门", Unsafe类提供了硬件级别的原子操作,直接访问操作系统底层,操作内存。开发人员如果不正确的使用,极容易造成程序出错,程序崩溃等问题。,在日常使用 Unsafe 时一定要慎重。在不理解背后原理其不要使用。在Java 9 中官方提出移除 Sun.misc.Unsafe, 对于 Java 语言生态应用太广并未能轻易移除,在 JAVA 9 新增加了 jdk.internal.misc.Unsafe 类来替代前者的功能。后者 不会直接暴露给应用程序。

此图来源美团技术团队:https://tech.meituan.com/2019/02/14/talk-about-java-magic-class-unsafe.html

CAS

Java提供了非阻塞的volatile关键字来解决共享变量的可见性问题,这在一定程度上弥补了锁带来的开销问题,但是volatile只能保证共享变量的可见性,不能解决读-改-写等的原子性问题。CAS(Compare And Swap)指比较并交换,是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。JDK里面的Unsafe类提供了一系列的 compareAndSwap* 方法。CAS算法CAS(V, E, N)包含3个参数,V表示要更新的变量,E表示预期的值,N表示新值。在且仅在V值等于E值时,才会将V值设为 N,如果V值和 E值不同,则说明已经有其他线程做了更新,当前线程什么都不做。最后,CAS返回当前V的真实值。Concurrent包下所有类底层都是依靠CAS操作来实现,而sun.misc.Unsafe为我们提供了一系列的CAS操作。CAS 会遇到两个常见的问题?

  • ABA问题

  • 自旋问题

AQS

AbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。AQS定义了一套多线程访问共享资源的同步框架,许多同步类的实现都依赖于它,例如常用的Synchronized、ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch等。该框架下的锁会先尝试以CAS乐观锁去获取锁,如果获取不到,则会转为悲观锁(如RetreenLock)。

到此,相信大家对"JUC类工具有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

原子 线程 问题 更新 同步 编程 数据 变量 底层 程序 内存 工具 方法 框架 学习 安全 操作系统 内容 基础 概念 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 深圳九邦互联网科技有限公司 云之行互联网科技 互联网通讯科技 互联网科技战争 互联网金融科技创新 广州凡科互联网科技 唐信互联网科技 大连 温州喔噻互联网科技有限公司 互联网公司科技股 智腾互联网科技有限公司 洛阳昕诺飞互联网科技有限公司 燊美集互联网科技有限公司 互联网数据科技专业 科技赋能视角下互联网保险发展 徐州市互联网科技有限公司 广东鹅鹅鹅互联网科技有限公司 上海万顺科技互联网有限公司招聘 安徽九吞吴互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 厦门中拓互联网络科技有限公司 互联网中国科技 上海挚品互联网科技 上海卓越科技 互联网 互联网科技创新企业排名 华脉科技工业互联网产品 海南科技产业互联网平台 互联网科技公司的市场部门 广州优美互联网科技 互联网科技企业文化
0