Java 语言特性【一】——JUC(Java 并发工具包)

引言

JUC即java.util.concurrent,是java提供的用于多线程处理的工具类库。

打开jdk包,JUC代码就在rt.jar包中,concurrent下有atomic和locks两个package,并且还有concurrentXXX、Executor、Future、Queue等。

AtomicXXX

atomic即原子类,如图:

其中,AtomicBoolean,AtomicInteger,AtomicLong,DoubleAccumulator,DoubleAdder,LongAccumulator,LongAdder 都是基本类型的原子类,更适合高并发场景。

以 AtomicLong 和 LongAdder 来说,AtomicLong 是通过 unsafe 类实现的,基于 CAS。unsafe 类是底层工具类,JUC 中很多类的底层都使用到了 unsafe 包中的功能。unsafe 类提供了类似 C 的指针操作,提供 CAS 等功能。并且 unsafe 类中的所有方法都是 native 修饰的。在说 AtomicXXX 之前,先补一下关于 CAS的相关知识,这里就引出了线程同步与互斥的内容。

原文地址:https://www.cnblogs.com/yadongliang/p/12325641.html

时间: 2024-10-06 20:46:38

Java 语言特性【一】——JUC(Java 并发工具包)的相关文章

Java语言特性详解

Java语言是一个支持网络计算的面向对象程序设计语言.Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性, 如支持并发程序设计.网络通信.和多媒体数据控制等.主要特性如下:        1) Java语言是简单的  Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java.另一方面,Java丢弃了C++ 中很少使用的.很难理解的.令人迷惑的那些特性, 如操作符重载.多继承.自动的强制类型转换.特别地,Java语言不使用指针,并提供了自动的

《快乐编程大本营》java语言训练班 2课:java的变量

<快乐编程大本营>java语言训练班 2课:java的变量 1变量介绍 2变量分类,数值变量 3变量分类-字符串变量 4变量分类-布尔变量 5变量分类-对象 http://code6g.com/pxphp/px/ban2.php?_lmbh1=001&_lmbh2=001001&_lmbh3=001001002提供一对一辅导服务,编程问题找牛哥: 原文地址:http://blog.51cto.com/13149944/2316187

【Java语言特性学习之四】JUC

一.JUC 简介 在Java5.0提供了java.util.concurrent(简称JUC)包,在此包中增加了并发编程常用工具类,包括线程池,异步IO和轻量级任务框架;还提供了设计用于多线程上下文中的Collection实现等.目的就是为了更好的支持高并发任务,让开发者利用这个包进行的多线程编程时可以有效的减少竞争条件和死锁线程. 按照功能可以大致划分如下:juc-locks 锁框架juc-atomic 原子类框架juc-sync(tools) 同步器框架juc-collections 集合框

java语言特性概述

一.前言 我们都知道java是面向对象的编程,其中四个基本特性:抽象.封装.继承.多态.这四个特性,概括起来可以这么理解,抽象.封装.继承是多态的基础,多态是抽象.封装.继承的表现. 二. JAVA 语言特点    a) 跨平台,一次编译,到处运行.    b) 速度慢,但很稳定, 没有内存泄漏 (memory leakage),不容易出现错误.    c) 不适合对速度要求高的图形界面操作, 适合服务端应用.    C/S (Client/Server) -> B/S (Browser/Ser

【Java语言特性学习之二】反射

一.概念java加载class文件分两种情况:(1)类型是编译器已知的,这种文件的.class文件在编译的时候,编译器会把.class文件打开(不加载)检查,称为Run- Time Type Identification 运行时类型识别(2)从其它地方获取引用,然后动态的把这个未知类型的引用的对象的.class文件加载进jvm虚拟机里,称为反射: 在运行状态中,动态获取类信息(属性.方法)及动态调用类对象方法的功能称为java的反射机制. 二.反射APIJava反射包:java.lang.ref

LeapMotion控制器 java语言开发笔记--(Java开发环境的准备)

(1)官方文档说的是必须是JDK6,JDK7,我试了一下JDK8也是可以的 (2)我是在Windows系统下用的是Eclipse Java的开发环境这里不再多说.将下载的JDK里面的java.dll和LeapJava.dll文件拷贝到jre安装目录下的bin目录下(java虚拟机和Leapmotion控制器交换数据就是靠着两个库文件),如下图所示: 需要注意的是要区分是32位系统还是64位系统的,并使用相应的文件 (3)下载最新的sdk和LeapMotion软件的驱动服务软件在Eclipse的工

Java从0到全栈-Java语言概述与开发环境搭建

Java从0到全栈-Java语言概述与开发环境搭建 Java从0到全栈 Java语言概述 Java发展历史 Java之父-James Golsing 起源 1991年,SUN(Standford University Network)公司的James Golsing领导的工程师小组想要开发一种用于像电视机.微波炉.电话这样的消费类电子产品的小型计算机语言,该产品的特点是由于不同的厂商选择不同的CPU和操作系统,因此要求该语言不能和特定的体系结构绑定在一起,也就是跨平台的.最初将这个语言命名为Oa

[Java入门笔记] Java语言简介

前言 学习Java有一段时间了,但是一直缺少一个系统的思想,现在重新通过书籍中.网上的文章,视频等资料,整理与回顾Java的知识点. 言归正传,让我们先从了解Java语言开始. Java语言的由来 Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的.1995年更名为Java,并

Java(一)——认识Java语言

1.Java语言简介 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言,具有卓越的通用性.高效性.平台移植性和安全性.Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单.面向对象.分布式.解释性.健壮.安全与系统无关.可移植.高性能.多线程和动态的语言. 2.Java平台三大体系 Java分为三个体系,分别为Java SE(J2SE,Java2 Platform Standard Edition,标准版):JavaEE(J2EE,Java 2 Platform,