JUC是什么

JUC是 在Java 5.0添加的 java.util.concurrent包的简称,目的就是为了更好的支持高并发任务,

让开发者利用这个包进行的多线程编程时可以有效的减少竞争条件和死锁线程。

JUC的结构

1,tools(工具类):又叫信号量三组工具类,包含有

1)CountDownLatch(闭锁) 是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待

2)CyclicBarrier(栅栏) 之所以叫barrier,是因为是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 ,并且在释放等待线程后可以重用。

3)Semaphore(信号量) 是一个计数信号量,它的本质是一个“共享锁“。信号量维护了一个信号量许可集。线程可以通过调用 acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。

2,executor(执行者):是Java里面线程池的顶级接口,但它只是一个执行线程的工具,真正的线程池接口是ExecutorService,里面包含的类有:

1)ScheduledExecutorService  解决那些需要任务重复执行的问题

2)ScheduledThreadPoolExecutor   周期性任务调度的类实现

3,atomic(原子性包):是JDK提供的一组原子操作类,

包含有AtomicBoolean、AtomicInteger、AtomicIntegerArray等原子变量类,他们的实现原理大多是持有它们各自的对应的类型变量value,而且被volatile关键字修饰了。这样来保证每次一个线程要使用它都会拿到最新的值。

4,locks(锁包):是JDK提供的锁机制,相比synchronized关键字来进行同步锁,功能更加强大,它为锁提供了一个框架,该框架允许更灵活地使用锁包含的实现类有:

1)ReentrantLock   它是独占锁,是指只能被独自占领,即同一个时间点只能被一个线程锁获取到的锁。

2)ReentrantReadWriteLock   它包括子类ReadLock和WriteLock。ReadLock是共享锁,而WriteLock是独占锁。

3)LockSupport 它具备阻塞线程和解除阻塞线程的功能,并且不会引发死锁。

5,collections(集合类):主要是提供线程安全的集合,比如:

1)ArrayList对应的高并发类是CopyOnWriteArrayList,

2)HashSet对应的高并发类是 CopyOnWriteArraySet,

3)HashMap对应的高并发类是ConcurrentHashMap等等

juc是什么java_JUC简介相关推荐

  1. JAVA并发编程JUC基础学习(简介)

    2019独角兽企业重金招聘Python工程师标准>>> 之前写过一篇并发编程的简单实例应用,Future快速实现并发编程,可以很快的在自己的项目中应用,但并不系统,之前说过总结一篇( ...

  2. Java JUC 简介

    引言 本系列文章旨在介绍 Java 并发相关的知识,本文作为开篇主要介绍了 JDK 中常用的并发库(JUC)的使用方式, 后续的文章中我会自上而下地剖析了 JUC 中各个部门的实现原理,从直接下级框架 ...

  3. 面试高频——JUC并发工具包快速上手(超详细总结)

    目录 一.什么是JUC 二.基本知识 2.1.进程和线程 2.2.Java默认有两个进程 2.3.Java能够开启线程吗? 2.4.并发和并行 2.5.线程的状态 2.6.wait和sleep的区别 ...

  4. JUC学习笔记及拓展

    Java JUC 1 Java JUC简介 在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于 ...

  5. java并发编程(二十一)----(JUC集合)CopyOnWriteArraySet和ConcurrentSkipListSet介绍

    转载自  java并发编程(二十一)----(JUC集合)CopyOnWriteArraySet和ConcurrentSkipListSet介绍 这一节我们来接着介绍JUC集合:CopyOnWrite ...

  6. Java多线程系列--“JUC线程池”06之 Callable和Future

    转载自  Java多线程系列--"JUC线程池"06之 Callable和Future Callable 和 Future 简介 Callable 和 Future 是比较有趣的一 ...

  7. Jdk1.8 JUC源码增量解析(1)-atomic-Striped64

    转载自  Jdk1.8 JUC源码增量解析(1)-atomic-Striped64 功能简介: Striped64是jdk1.8提供的用于支持如Long累加器,Double累加器这样机制的基础类. S ...

  8. Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator

    转载自 Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator 功能简介: LongAdder是jdk1.8提供的累加器,基于Striped64实现. ...

  9. Java JUC学习 - ConcurrentLinkedDeque 详解

    Java JUC学习 - ConcurrentLinkedDeque 详解 0x00 前言 如何实现并发程序,对于Java以及其他高级语言来说都是一件并不容易的事情.在大一上学期的时候,我们学习了链表 ...

最新文章

  1. 如何在命令行模式下升级的你Visual Studio的Solution文件
  2. 自学前端很难吗?只要你足够努力,高中学历也能获得offer
  3. 阿里云 Aliplayer高级功能介绍(四):直播时移
  4. LibreOffice、OpenOffice 漏洞可导致黑客欺骗已签名文档
  5. codeblocks16.01 中配置Opencv3 姿势
  6. 【sklearn第六讲】特征提取(下)
  7. Java高并发之设计模式,设计思想!
  8. Java面试之Java集合5——HashMap的底层实现
  9. Java常用设计模式总结及应用场景分析
  10. httpclient3 自动登陆淘宝, 开心网
  11. FGFA(Flow-Guided Feature Aggregation for Video Object Detection)论文详读
  12. Linux的ping用python,通过linux进行ping,并以python格式获得输出
  13. java毕业设计在线招投标系统Mybatis+系统+数据库+调试部署
  14. 【终极!!!】cannot connect to X server, couldnt connect to display
  15. ROS系统之安装系列(一):安装步骤
  16. JVM笔记(三)类与类加载
  17. C# Serializable标签 和序列化
  18. jsPlumb使用小技巧
  19. Qt输出4位大字十六进制,不足4位左边补0
  20. 家族关系查询系统程序设计算法思路_数据结构课程设计(家族关系查询系统)

热门文章

  1. iOS MBProgressHUD 之带底板的加载提示
  2. [代码阅读] ECS toString实现方法
  3. [Leedcode][JAVA][第98题][验证二叉搜索树]
  4. 图论中的基础概念总结
  5. POJ-3041 匈牙利算法 二分图最大匹配
  6. java 面板 选择颜色_[代码全屏查看]-java颜色选择器
  7. ansible管理mysql安装初始化_[ansible]-ansible初始化mysql数据库
  8. 计算机学院创新实验室,ACM创新实验室概况
  9. mysql数据库持续_MySql数据库--持续记录ing
  10. python request库_【Python爬虫】Request库入门