iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java并发容器介绍
  • 742
分享到

Java并发容器介绍

2024-04-02 19:04:59 742人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1、原子类2、锁3、并发容器4、List接口下5、Map接口下6、Set接口下7、Queue接口下Java并发包(concurrent)是Java用来处理并发问题的利器,该并发包

Java并发包(concurrent)是Java用来处理并发问题的利器,该并发包中主要有原子类,锁(lock),并发容器类等等。本系列博客主要就是介绍并发包中一些常用的并发容器,常用的类。那么就让我们一起来揭开并发包的面纱吧。

环境:

基于jdk1.8

1、原子类

首先登场的就是我们的原子类。啥是原子类?原子类用啥用?
第一个问题,啥是原子类:操作具有原子性的类,我们称之为原子类。为啥要有原子类呢?
原子类是为了保证操作的原子性。例如:long i=0; i=i+1(i为全局变量),在多线程的环境下,就有线程安全的问题,因为,i=i+1这个操作分为三条CPU指令执行。指令执行完之后会发生指令切换,造成可见性问题。但是,如果我们使用AtomicLong类来包装i,然后调用getAndIncrement()方法(该方法是具有原子性的),则可以保证其安全性。


 AtomicLong atest = new AtomicLong(0);
 atest.getAndIncrement();

原子类主要有如下几个:

2、锁

原子类说完了,我们接着来说说锁,我们都知道Javasynchronized关键字作为同步锁,同时,在并发包中还提供了Lock锁。关于Locksynchronized的区别后面会有说到。

锁的类图如下:

3、并发容器

简单的说完了锁,我们接着来看重头戏并发容器。虽然,Java中提供了同步容器VectorCollections包装的容器。但是同步容器最大的问题就是性能太差。因为其是直接对添加元素,删除元素,读取元素的所有方法都加锁。
所有在并发包中提供了并发容器,并发容器的实现后面我们在阐述。

我们先看看有哪些并发容器。
按照数据结构类型分类来看。

4、List接口下

List 接口下有CopyOnWriteArrayList实现类。其实现是内部维护了一个数组,成员变量array就指向这个内部数组,读操作都是基于array进行的,写操作的话,
CopyOnWriteArrayList会将array复制一份,然后,在新复制处理的数组上执行增加元素的操作。执行完之后再将array指向这个新的数组。仅仅适用于写操作非常少的场景,而且能够容忍读写的短暂不一致的情况。

5、Map接口下

Map 接口下有ConcurrentHashMapConcurrentSkipListMapConcurrentHashMap内部的数据结构跟HashMap一致,都是数组+链表+红黑树的结构。ConcurrentSkipListMap内部的数据结构则是数组+跳表的数组结构。

6、Set接口下

Set接口下面有ConcurrentSkipListSetCopyOnWriteArraySet两个并发类。

7、Queue接口下

Queue接口下的并发容器类比较多,阻塞队列BlockingQueue接口下有

单端堵塞队列:

  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • SynchronousQueue
  • LinkedTransferQueue
  • PriorityBlockingQueue
  • DelayQueue

双端阻塞队列:LinkedBlockingDeque

非阻塞队列有:单端队列ConcurrentLinkedQueue双端队列ConcurrentLinkedDeque

总结:

到此这篇关于java并发容器介绍的文章就介绍到这了,更多相关Java并发容器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java并发容器介绍

本文链接: https://www.lsjlt.com/news/155256.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java并发容器介绍
    目录1、原子类2、锁3、并发容器4、List接口下5、Map接口下6、Set接口下7、Queue接口下Java并发包(concurrent)是Java用来处理并发问题的利器,该并发包...
    99+
    2022-11-12
  • Java并发编程之StampedLock锁介绍
    StampedLock: StampedLock是并发包里面JDK8版本新增的一个锁,该锁提供了三种模式的读写控制,当调用获取锁的系列函数时,会返回一个long 型的变量,我们称之为...
    99+
    2022-11-13
  • Java并发编程之线程创建介绍
    目录1.线程与进程2.线程的创建与运行1.线程与进程 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是一个实体,一个进程中至少有一个线程,是CPU调...
    99+
    2022-11-13
  • Java并发编程之线程状态介绍
    目录线程状态概述睡眠sleep方法等待和唤醒等待唤醒的一个小例子线程状态概述 线程由生到死的完整过程: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态...
    99+
    2022-11-13
  • Java 并发框架的介绍和使用方法
    这篇文章主要讲解了“ Java 并发框架的介绍和使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ Java 并发框架的介绍和使用方法”吧! 为什么要写这篇文章几年前 NoSQL 开始流...
    99+
    2023-06-03
  • Java并发fork/join框架的介绍及使用
    本篇内容主要讲解“Java并发fork/join框架的介绍及使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java并发fork/join框架的介绍及使用”吧!目录一、概述二、说一说 Recu...
    99+
    2023-06-20
  • JAVA虚拟机(JVM)详细介绍(八)——高效并发
    内存模型内存模型是在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。其主要目标是定义程序中各个变量的访问规则。主内存和工作内存所有的变量都存储在主内存中,每条线程还有自己的工作内存,其工作内存中是被线程使用到的变量的主内存副...
    99+
    2017-08-31
    java教程 JVM
  • Java并发编程之同步容器与并发容器详解
    一、同步容器  1、Vector——>ArrayList  vector 是线程(Thread)同步(Synchronized)的,所以它也是线程...
    99+
    2022-11-12
  • Node.js 与并发模型的详细介绍
    目录进程线程内核态线程用户态线程轻量级进程(LWP)小结协程I/O 模型阻塞 I/O非阻塞 I/O同(异)步 I/ONode.js 的并发模型总结前言: Node.js 现在已成为构...
    99+
    2022-11-13
  • Java NIO开发的实例介绍
    本篇内容介绍了“Java NIO开发的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先来看下传统的阻塞型网络I/O的不足Java ...
    99+
    2023-06-17
  • Java并发编程之同步容器与并发容器的示例分析
    这篇文章主要为大家展示了“Java并发编程之同步容器与并发容器的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java并发编程之同步容器与并发容器的示例分析”这篇文章吧。一、同步容器&n...
    99+
    2023-06-15
  • Java并发编程之介绍线程安全基础的示例
    这篇文章主要介绍了Java并发编程之介绍线程安全基础的示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。线程安全基础线程安全问题账户取款案例同步代码块synchronized...
    99+
    2023-06-06
  • mysql并发事务控制的过程介绍
    本篇内容主要讲解“mysql并发事务控制的过程介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql并发事务控制的过程介绍”吧!1、单版本控制锁。锁以独占的方式确保事务在只有一个版本的情况...
    99+
    2023-06-20
  • Java并发编程之同步容器
    目录简介一、什么是同步容器二、为什么要有同步容器三、同步容器的优缺点四、同步容器的使用场景总结简介 同步容器主要分两类,一种是Vector这样的普通类,一种是通过Collection...
    99+
    2022-11-12
  • java并发容器ConcurrentHashMap深入分析
    目录前言基础回顾红黑树红黑树数据结构红黑树插入数据多线程竞争下的读写操作扩容原理正在扩容 && 有多个线程正在竞争扩容期间的读操作扩容期间的写操作总结前言 我是fan...
    99+
    2022-11-13
  • 云计算教程之容器介绍
      好程序员云计算培训分享之容器介绍:容器其实是一种沙盒技术。沙盒就是能够像一个集装箱一样,把你的应用"装"起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去。...
    99+
    2023-06-03
  • docker中容器数据卷volume介绍
    目录docker 容器数据卷volume使用数据卷方式一:直接使用命令挂载 -v方式二:Dockerfile数据卷容器总结docker 容器数据卷volume 如果数据都在容器中,那...
    99+
    2022-11-12
  • Docker容器数据卷技术介绍
    目录Docker容器数据卷技术介绍一、卷技术介绍二、使用数据卷Docker容器数据卷技术介绍 一、卷技术介绍 现在我们知道docker的理念就是把应用和环境打包成镜像,方便我们去运行...
    99+
    2022-11-13
  • WPF布局及布局容器介绍
    WPF布局基础 WPF布局原则 一个窗口中只能包含一个元素不应显示设置元素尺寸不应使用坐标设置元素的位置可以嵌套布局容器 WPF布局容器 StackPanel: 水平或垂直排列元素、...
    99+
    2022-11-13
  • Rootless容器背景与架构介绍
    本篇内容介绍了“Rootless容器背景与架构介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Rootless容器背景与架构Docker和...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作