concurrent在哪儿:jdk\jre\lib\rt.jar

package java.util.concurrent;

本文从特性、分类、扩展方面一一道来。

1 特性

  包中包含大量有用的构建块,线程安全集合、线程池、信号和同步工具。可以用来改进并发的性能,使用这些后可以减少代码中的同步等。

2 分类

2.1 Atomic包

  包下实现了原子操作,移步原子操作

  原子操作核心思想是CAS(compare and swap)比较并操作,然后调用底层操作系统指令来完成。

  原子操作有对基本数据类型boolean、Integer、Long操作,对数组操作,对对象引用操作,对volatile字段原子操作。

2.2 Lock包

  公平锁

  非公平锁

2.3 其他

  BlockingQueue阻塞队列。

  CancellationException

  ConcurrentHashMap

  CopyOnWriteArrayList和CopyOnWriteArraySet绝对线程安全:写时复制容器,当我们往一个容器添加元素的时候,不直接往当前容器添加,而是将当前容器复制一个新容器,在新容器添加元素,添加完成后,再将引用指向新容器。

  CountDownLatch一个同步辅助类,调用await方法时,任何线程都被阻塞,直到锁计数减少为0,然后在该点等待的所有线程才被释放。

  应用场景:替代synchronized或同时处理一类操作

  CyclicBarrier一个同步辅助类,容许一组线程相互等待,直到这组线程达到某个公共的屏障点。

  Executor框架,用于管理实现Runnable的任务执行的整个框架。

  TimeUnit,其内部的sleep用Thread.sleep实现,可以设置时间单位,可用性更好些。


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!

JAVA基础之——JDK包分析concurrent的更多相关文章

  1. 【java基础之jdk源码】Object

    最新在整体回归下java基础薄弱环节,以下为自己整理笔记,若有理解错误,请批评指正,谢谢. java.lang.Object为java所有类的基类,所以一般的类都可用重写或直接使用Object下方法, ...

  2. 【java基础之jdk源码】集合类

    最近在整理JAVA 基础知识,从jdk源码入手,今天就jdk中 java.util包下集合类进行理解 先看图 从类图结构可以了解 java.util包下的2个大类: 1.Collecton:可以理解为 ...

  3. java基础19 导包和“命令行”打jar包

    1.导包 1.1.包 java中的包就相当于Windows文件夹        编译格式:javac -d . 类名.java 1.2.包的作用 1.解决了类名重复冲突的问题    2.便于软件版本的 ...

  4. Java基础(1)--JDK,变量

    Scanner的next()方法和nextLine()方法 1.next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动 ...

  5. Java基础知识 ——JDK,JRE和JVM

    1.开发简单的Java程序过程: 名词解释: JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行 ...

  6. java基础十[包、Jar存档文件和部署](阅读Head First Java记录)

    将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的 ...

  7. 01 java 基础:jdk jre path classpath 相关问题

    JRE : Java 运行环境 JDK :  Java 开发工具包,其中包括 JRE  (javac.java.javap.jar.javadoc .javah 等命令) JVM : Java 虚拟机 ...

  8. JAVA基础之JDK、JRE、JVM关系

    什么是JRE和JDK JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE.所以安装了JDK,就不 ...

  9. JAVA基础之——JDK分析io、nio

    在哪儿:jdk\jre\lib\rt.jar package java.io;   package java.nio; 1 分类 1.1 IO 持久化序列化对象并压缩步骤 new FileOutput ...

随机推荐

  1. 【ocp-12c】最新Oracle OCP-071考试题库(37题)

    19.choose the best answer View the Exhibit and examine the structure of the PROMOTIONS table. Evalua ...

  2. 【OCP-12c】CUUG 071题库考试原题及答案解析(19)

    1.choose the best answerWhat is the primary difference between the relational database (RDB) andobje ...

  3. “全栈2019”Java第一百一十章:局部内部类与匿名内部类区别详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. soapui加载天气预报接口报错Characters larger than 4 bytes are not supported: byte 0xb1 implies a length of more than 4 byte的解决办法

    soapui加载天气预报接口时报错如下: Error loading [http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl ...

  5. 【文文殿下】[51nod1469] 淋漓尽致子串

    SAM的经典应用 一个状态的SIze==1绝对不合法. 一个状态在parent树上有一个Size>1的后继绝对不合法(前面可以再补字符) 一个状态可以转移到Size>1的节点绝对不合法,因 ...

  6. Redis-Java 交互的应用

    一.首先介绍一下Redis Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化.除此 ...

  7. 30 个免费的 Sketch 必备插件

    简评:中秋三天小长假,要不要学点啥?比如简单的设计?比如用 Sketch 做个项目? Sketch 有许多值得称赞的地方,其丰富的插件就是亮点之一.Sketch 的社区有着大量免费高效的插件.今天这篇 ...

  8. IntelliJ IDEA中可以用Tab键跳出括号和引号吗?

    在 Settings->Editor->General->Smart Keys 中勾选 Jump outside closing bracket/quote with Tab 即可.

  9. 架构师养成记--30.Redis环境搭建

    Redis的安装 下载地址http://redis.io/download 安装步骤: 首先需要安装gcc,把下载好的redis-3.0.0-rc2.tar.gz 放到 /usr/local 文件夹下 ...

  10. xshell本地上传文件至服务器

    今天本地写了个项目,想传到服务器部署起来.就上网百度了一下挺多的,一个个记录下,如有雷同,纯属抄袭. lrzsz方法 rz # 检查是否安装 yum -y install lrzsz # 安装 rpm ...