JUC常用到的类

2023-11-08

JUC(java.util.concurrent)并发包中包含了许多并发编程中需要用到的类。

  1. 锁,如ReentratLock,ReadWriteLock。
    ReentrantLock重入锁,可以替代synchronized使用,并且有更多强大的功能,比如说可以中断锁,trylock,超时等待,公平锁等。
    ReadWriteLock,读写锁,更是对读和写进行了锁分离,在读多写少的场景下,能极大的提高程序的性能。
  2. 原子类
    基本类,数组类,引用类等。AtomicInteger比较常用。使用原子类,可以不需要手动加锁,实现线程安全。
    原子变量,由CAS实现,也就是比较并交换,只有当当前值和修改之间记录的值一样时,才会修改,它比的是地址。CAS是原子操作的一种,由cpu指令执行。
    CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许java调用其他语言。而compareAndSwapInt就是借助C来调用CPU底层指令实现的。
  3. 线程同步,使得线程间的同步更加容易。如CountDownLatch计数器,CyclicBarrier可重置计数器,semaphore【ˈseməfɔː(r)】计数器信号量。
    Semaphore(信号量)-允许多个线程同时访问: synchronized 和 ReentrantLock 都是一次只允许一个线程访问某个资源,Semaphore可以指定多个线程同时访问某个资源。
    CountDownLatch (倒计时器):这个工具通常用来控制线程等待,它可以让某一个线程等待直到倒计时结束,再开始执行。
    CyclicBarrier(循环栅栏): 比如我初始化一个Cyc类参数是5,那么每await()一次,就+1,当到5的时候,所有await阻塞的线程会一起被唤醒。初始化参数可以循环使用。
  4. 线程管理,Executors,ExecutorService方便线程池管理,线程提交等操作。Future和CompletableFuture方便接收异步调用结果和对返回结果进行后续操作。
  5. 并发集合类,提供ConcurrentHashMap,ConcurrentLinkedQueue,CopyOnWriteArrayList等,方便并发场景下的集合类操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JUC常用到的类 的相关文章

  • Java并发编程实战——并发容器之ThreadLocal及其内存泄漏问题

    文章目录 ThreadLocal的简介 ThreadLocal的实现原理 ThreadLocalMap详解 ThreadLocal内存泄漏问题 ThreadLocal的使用场景 ThreadLocal的简介 之前写过用ThreadLocal
  • 并发编程系列之Fork/Join

    前言 上节我们讲了阻塞队列 Java中的并发容器就算有了个基本的认识 今天我们来介绍一种线程工作模式 叫Fork Join 他是JDK7之后提供的一个并行执行框架 主要的思想我觉得是分而治之 将一个大的任务分成多个小的任务并行执行 然后等所
  • hystrix线程池隔离的原理与验证

    引子 幸福很简单 今天项目半年规划被通过 终于可以早点下班 先坐公交 全程开着灯 买了了几天的书竟然有时间看了 半小时后 公交到站 换乘大巴车 车还等着上人的功夫 有昏暗的灯光 可以继续看会儿书 过会儿车跑起来了 灯关了 我合上书 头靠着车
  • java.util.concurrent.locks.ReentrantReadWriteLock 读写锁

    读写锁简介 对共享资源有读和写的操作 且写操作没有读操作那么频繁 在没有写操作的时候 多个线程同时读一个资源没有任何问题 所以应该允许多个线程同时读取共享资源 但是如果一个线程想去写这些共享资源 就不应该允许其他线程对该资源进行读和写的操作
  • Java并发编程:Copy-On-Write机制详解

    前言 在多线程并发访问共享数据时 可能会出现并发问题导致程序崩溃 数据异常等情况 为了避免这些问题 Java中提供了多种并发控制方法 其中Copy On Write COW 机制就是一种常用的技术 本文将详细介绍COW机制的概念 如何保证线
  • 并发编程系列之线程简介

    前言 前几天我们把Java内存模型介绍了下 大家对JMM也有所认识了 从今天我们就开始走进一个我们天天挂在嘴边 听在耳边的东西 线程 对于线程相信大家都不会陌生 当然也有很多小伙伴在开发中或多或少的使用到线程 即使你没有使用过 但是并不代表
  • 并发编程系列——6线程池核心原理分析

    学习目标 线程池的作用 jdk给我们提供了哪几种常用线程池 线程池有哪几大核心参数 线程池的拒绝策略有哪些 线程中阻塞队列的作用 线程池的工作流程 线程池的设计思维 线程池中的阻塞队列如果用默认的 会有哪些问题 线程池的工作状态有哪些 线程
  • 理解什么是 JMM

    理解什么是 JMM 本文已收录至 GitHub https github com yifanzheng java notes Java 虚拟机是一个完整的计算机的一个模型 因此这个模型自然也包含一个内存模型 Java 内存模型 也就是说 J
  • JUC常用到的类

    JUC java util concurrent 并发包中包含了许多并发编程中需要用到的类 锁 如ReentratLock ReadWriteLock ReentrantLock重入锁 可以替代synchronized使用 并且有更多强大的
  • 并发编程(线程)面试题总结2022

    目录 并发编程三要素是什么 在 Java 程序中怎么保证 多线程 的运行安全 什么是多线程 多线程的优劣 形成死锁的四个必要条件是什么 创建线程有哪几种方式 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口
  • 159.并发编程(三):线程池,JUC

    目录 一 线程池 1 线程池的作用 2 手写线程池 3 ThreadPoolExecutor 1 线程池状态
  • 如何设计高性能的分布式锁

    什么是分布式锁 在 JVM 中 在多线程并发的情况下 我们可以使用同步锁或 Lock 锁 保证在同一时间内 只能有一个线程修改共享变量或执行代码块 但现在我们的服务都是基于分布式集群来实现部署的 对于一些共享资源 在分布式环境下使用 Jav
  • 【并发】并发

    并发 进程和线程 进程 资源分配的基本单位 可以理解为在内存中运行的程序 每个进程都有独立的内存空间 一个进程包含多个线程 线程 任务执行的基本单位 负责进程中任务的执行 每个线程共享进程的内存空间 一个线程使用时 其他线程必须等待 用户
  • AQS原理解析及源码分析

    目录 1 介绍下AQS几个重要的组件 2 内部成员变量state 3 同步队列NODE 4 等待队列 condition AbstractQueuedSynchronizer又称为队列同步器 后面简称AQS AQS的核心思想是 如果被请求的
  • 在Windows下使用MingGW[GCC+OpenMP]和CodeBlocks开发多核应用基本环境配置

    转自 http blog csdn net danny xcz article details 3332251 从06年开始 多核开发已经越来越多的成为所有应用设计必须考虑的问题 我使用MingGW CodeBlocks来测试OpenMP多
  • QT多线程基础

    文章目录 简介 相关名词 QT 运行方式 基础使用方法 void QObject moveToThread QThread targetThread 退出线程过程 wait 等待子线程的结束 实例 QT锁QMutex QMutexLocke
  • Lock锁

    Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作 它们允许更灵活的结构化 可能具有完全不同的属性 并且可以支持多个相关联的对象Condition 1 传统的synchronized package cn d
  • 锁介绍名词解释&&Lock && synchronized

    各种锁名词解释及应用 一 名词解释 1 乐观锁 VS 悲观锁 2 自旋锁 VS 适应性自旋锁 3 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁 4 公平锁 VS 非公平锁 5 可重入锁 VS 非可重入锁 6 独享锁 VS 共享锁 二
  • CountDownLatch、CyclicBarrier、Semaphore源码解析

    1 CountDownLatch 计数器 CountDownLatch CountDownLatch 类位于java util concurrent包下 利用它可以实现类似计数器的功能 比如有一个任务A 它要等待其他4个任务执行完毕之后才能
  • Java线程(Thread)生命周期的6种状态

    当线程被创建并启动以后 它既不是一启动就进入了执行状态 也不是一直处于执行状态 在线程的生命周期中 可能处于不同的状态 java lang Thread State 列举出了这6种线程状态 线程状态 导致状态发生条件 New 新建 线程刚被

随机推荐

  • 知乎搬运副业项目,适合新手的创业项目

    今天刷抖音发现一个账号 主要写知乎故事的 只有4个作品 涨粉700多 点赞2600 在抖音上搜索了一下 发现有一些类似的账号 作品不多 但涨粉蛮快的 看来这种账号蛮受大家欢迎的 是个不错的网络创业项目 经朋友分析测试 找知乎热门故事做素材涨
  • Android-Tangram模型:淘宝、天猫都在用的UI框架模型你一定要懂

    3 应用场景 常规业务 中 复杂的布局格式混排 如 浮动布局 栏格布局 通栏布局 一拖N布局 瀑布流布局 还可以组合使用这些布局 具体场景是 如电商平台首页 活动频道等等 Tangram 模型目前已在手机天猫 淘宝 Android 版内广泛
  • org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state wo

    90 的hive数据库初始化失败的原因都是配置文件没整明白 咱们可以看看hive env sh template 这句话的意思是 lt 警告 这个文件是自动生成的 只用于文档的目的 gt lt 警告 你对这个文件所做的任何修改都将被Hive
  • VCSA服务重启命令

    Sphere Web Client界面的服务分别是 vmware mbcs vmware netdumper vmware rbd watchdog 分别执行命令确认 首先执行命令 service control status vmware
  • python实现-逆波兰式-进阶-基本计算器

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 21天 逆波兰式 chat gpt分析 逆波兰表达式 Reverse Polish Notation RPN 也称为后缀表达式 是一种不需要括号来表示运算符优先级的数学表达式表
  • 【BingGPT对话记录】基于格的密码学简介

    格密码学是一种基于格 lattice 的数学结构的密码学分支 它具有抵抗量子计算攻击的特性 格是一个由线性无关向量生成的离散点集 可以用来描述许多复杂的几何和代数问题 格密码学的安全性通常建立在最坏情况下的难度假设上 即即使给定最优化算法
  • 4.Docker网络配置

    网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的 每个网络上都有许多主机 这样便构成了一个有层次的结构 IP 地址在设计时就考虑到地址分配的层次特点 将每个 IP 地址都分割成网络号和主机号两部分 以便
  • Java private方法访问

    大家知道 Java中private修饰符修饰的方法或属性 只有在该类内可以访问 其他类均无法访问 事实真的是这样吗 下面一个例子可以实现访问一个类中的private方法 原理是通过Java的反射机制 感觉Java反射机制在这点似乎不太安全
  • 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码

    文章目录 前言 一 物体识别算法原理概述 1 物体识别的概念 2 Yolo算法原理概述 二 opencv调用darknet物体识别模型 yolov3 yolov4 1 darknet模型的获取 2 python调用darknet模型实现物体
  • 深度学习环境配置1——windows下的tensorflow-gpu=1.13.2环境配置

    深度学习环境配置1 windows下的tensorflow gpu 1 13 2环境配置 注意事项 一 2021 9 11更新 二 2021 7 8更新 三 2020 11 5更新 学习前言 环境内容 环境配置 一 Anaconda安装 1
  • Android - Session 'app': Error Installing APK或installaion failed intall_parse_failed_manifest_的解决方法

    在Android Studio中启动模拟器的时候偶尔会遇到以下的问题 1 installaion failed with message intall parse failed manifest malformed 2 Session ap
  • 【Linux:进程间信号】

    文章目录 1 生活角度的信号 2 技术应用角度的信号 3 信号的产生 3 1 由系统调用向进程发信号 3 1 1 signal 3 1 2 kill 3 1 3 raise 3 2 由软件条件产生信号 3 3 硬件异常产生信号 3 4 通过
  • Git使用操作规范

    一 创建自己的开发分支 1 1 配置Git环境 1 1 1 Windows平台上安装 1 1 2 Linux平台上安装 1 1 3 Mac平台上安装 1 1 4 基本概念名词解释 Git 工作区 暂存区和版本库 工作区 就是你在电脑里能看到
  • Unity UGUI 无限循环列表 ----------多功能版

    一共有四种 循环列表 如下图 1 常用循环列表 2 收展嵌套 循环列表 3 弹框 循环列表 4 翻页 循环列表 注意点 1 层次结构如下图 2 Content 和 Item 控件锚点必须为如图 使用方式 只举例常用列表 其他列表查看 GIt
  • JDE(Towards Real-Time Multi-Object Tracking)代码训练——小白必看

    前言 自己在跑JDE多目标跟踪代码时 总结的方法和教训 一 数据集制作 1 可直接下载作者给的数据集 是制作好的 论文链接 https arxiv org pdf 1909 12605v1 pdf 代码链接 https github com
  • 如何使用oracle修改表字段长度

    系列文章目录 ORACLE简介 Oracle是一种关系数据库管理系统 RDBMS 广泛应用于企业应用程序中 它是由甲骨文公司在20世纪70年代末开发的 自此成为世界上最流行的数据库系统之一 Oracle以其可扩展性 可靠性和安全性而闻名 它
  • USB无线网卡的用途及编程实现

    USB无线网卡是一种设备 它可以通过USB接口连接到计算机 并提供无线网络连接功能 在本文中 我们将探讨USB无线网卡的用途以及如何通过编程实现相关功能 用途 提供无线网络连接 USB无线网卡允许计算机通过无线信号连接到网络 这对于那些没有
  • 【Java】------- Base64格式图片保存到服务器文件

    一 使用技术 Java Springboot 二 代码实例 fun base64ToImage base64转成图片格式 提示 data image png base64 的前缀要去掉 param imgBase64 base64 数据 p
  • Griffin 数据管理任务的SQL和原理

    文章目录 各种Measure内部计算原理 accuracy completeness distinct timeliness uniqueness profiling spark sql pre proc Service 任务管理模块 配置
  • JUC常用到的类

    JUC java util concurrent 并发包中包含了许多并发编程中需要用到的类 锁 如ReentratLock ReadWriteLock ReentrantLock重入锁 可以替代synchronized使用 并且有更多强大的