java 什么是线程同步,java多线程同步集合是什么?并发集合是什么?

java中关于集合的内容也是十分丰富的,而且相关的知识点也是十分多的。多线程集合所涵盖的范围是十分广阔的。今天就来为大家介绍一下,java多线程同步集合是什么以及并发集合是什么?一起来看看吧。

首先我们需要知道的是,无论是同步集合还是并发集合他们都支持线程安全,他们之间主要的区别体现在性能和可扩展性,还有他们如何实现的线程安全。

具体内容如下:

一、同步集合类

3.同步集合包装类,Collections.synchronizedMap()和Collections.synchronizedList()

二、 并发集合类

1.ConcurrentHashMap

2.CopyOnWriteArrayList

3.CopyOnWriteHashSet

三、性能

同步集合比并发集合会慢得多,主要原因是锁,同步集合会对整个May或List加锁

四、并发集合的实现原理

1.ConcurrentHashMap:把整个Map划分成几个片段,只对相关的几个片段上锁,同时允许多线程访问其他未上锁的片段。

2.CopyOnWriteArrayList:允许多个线程以非同步的方式读,当有线程写的时候它会将整个List复制一个副本给它。如果在读多写少这种对并发集合有利的条件下使用并发集合,这会比使用同步集合更具有可伸缩性。

五、 并发集合的使用建议

1.一般不需要多线程的情况,只用到HashMap、ArrayList,只要真正用到多线程的时候就一定要考虑同步。

2.ConcurrentHashMap实现原理

ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。

一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构,

一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素,

每个Segment守护者一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得它对应的Segment锁。如下图所示:

0c9595a07a6e1db46e53dbe5b7ac7785.png

以上就是关于java多线程同步集合是什么以及并发集合是什么的主要内容了。可以看出内容还是非常详实的。如果你对java知识感兴趣,想要了解更多java常见问题,敬请关注奇Q工具网。

推荐阅读:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windwos 批处理重定向, 讲的策彻底

本帖主要参考了《命令行参考》和一些前辈的文献,并加入了我自己的一些理解,希望能对各位有所帮助。 《命令行参考》中对重定向操作符有所论述,不过实在晦涩难懂,并且还有些错误,不利于大家理解。重定向的简单用法相信大…

matlab里符号的写法,Matlab中特殊符号的写法

Matlab的figure中输入上标、下标、特殊符号或字体坐标轴标注:1. 控制坐标轴尺度长度:set(gca,XLim,[-pi/2 pi])2. 定制自己想标注的刻度:(1)set(gca,XTick,[-pi/2:pi/4:pi])(2)set(gca,XTickLabel,{-pi/2 -pi/4: 0 pi/4 pi/2 pi*3/4 pi})3. 反…

VB.NET怎样开发自定义Windows控件

前言 Microsoft® Visual Basic® 的组件支持历来都是它的一大卖点,于是第三方软件开发商们纷纷开发出各种具有新功能性的可视控件 (也有少数非可视控件) 供 Visual Basic 程序员选用。这种特殊的 Visual Basic 开发形式创造了无数的第三方控件——有…

内核配置

make config:基于文本模式的交互式配置。 make menuconfig:基于文本模式的菜单型配置。(推荐使用,空格键选择:*:y,M:M,空格:N) make oldconfig:使用已有的配置…

mysql数据库面试总结(一)

1、数据库优化  1)数据库范式 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 如电话列可进行拆分---家庭电话、公司电话 第二范式(2NF):首先是 1NF,另外…

思科路由器IKEV2 L2L***预共享密码认证最简化配置

一.概述:思科路由器对于IKEV2,是有很多预配的,因此可以很少的配置就能完成IKEV2的配置。二.基本思路:A.两边都用SVTI的方式配置Flex ***B.没有用动态路由,配置静态路由,如果一边用DVTI,则需要两边配置静态路由三.测试拓…

Oracle存储过程学习

存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值范围); Begin Select count(*) into 变量1 fro…

关于通过Sql注入直接拖数据的讨论

和谐社会,拒绝***。 最近在老外的Blog上逛,突然发现我一直以来Dump数据的态度终于得到了某些老外的认可,通过Sql注入点直接拖下数据库是可行的。而且很多老外已经开始开发这方面的直接Dump数据的工具,并讨论相关的算法。很多人说行…

php mysql_query返回,php的mysql_query()函数处理以下( )指令成功就可以返回查询后的结果集。...

【多选题】皮亚杰认为影响发展的因素有( )。【单选题】关于宽带薪酬设计说法错误的是( )【判断题】《省煤炭厅2000年度工作总结》是一个文章式总结的标题。( )【单选题】小儿惊厥最常见的原因是:【单选题】The shipping company makes a notation such as “5 cartons have bee…

php-fpm配置笔记

Posted on 2013 年 2 月 27 日 3,070 Views 不得不说,英文不好弄linux服务器有时是挺痛苦的,苦逼的博主没好好学习英文,导致被lnmp折腾的够呛. php-fpm配置不当,导致服务器经常出现502错误,上个学期多次调整都没有解决,网上找来资料&#xff…

php xcat createadmin,php xcat update升级后出错,不知怎么弄

恢复再次升级,同样的错误,没法升级了吗Fetching originremote: Enumerating objects: 353, done.remote: Counting objects: 100% (353/353), done.remote: Compressing objects: 100% (3/3), done.remote: Total 802 (delta 350), reused 350 (delta 35…

JNDI(datasource)在tomcat,JBOSS下的spring+quartz配置

由于项目中多个小应用(类似插件)需要使用数据库连接池,不能为每一个应用中配置连接池。故采用JNDI的模式进行配置。 我们使用的web服务器有tomcat和jboss两种。分别介绍其在这两种服务器下并且在两种应用模式springhebernat与quartz下的配置。…

UVA10561 Treblecross

Treblecross 题目大意:给定一个带有.和X的字符串作为初始局面,两人轮流游戏,将.修改为X,当一个人放下X后,出现三个连续的X,游戏接触,放下X的人获胜。判断先手必胜还是必败,并给出第一…

解决VS2005 远程工具无法通过同步软件连接S5pv210 样机的问题

居然无法连接,记得以前遇到过的 1 分钟前 上传下载附件 (58.21 KB)后来还是看MSDN解决了MSDN连接如下http://msdn.microsoft.com/en-us/library/ee480836.aspx——Troubleshooting a Connection to a Target Device That Uses Platform Manager 转载一下sunrain_hjb…

matlab画曲面二次,如何用matlab绘制二次B样条三维曲面(已知控制点和节点矢量)?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼小弟初来乍到,现在需要用matlaB绘制二次B样条曲面,现在已知信息:小弟做这个已经一个星期了,现在无任何进展,现在是万分着急,希望高手们给小弟指点一二&#xf…

一些应该记住的东西(持续更新?再也不会更新了)

没什么用的目录 1.积性函数与杜教筛 2.搜索的几种优化与考试期望得分 3.乱讲 4.模拟退火系列 5.生成函数系列 2018.1.18 首先写写数学方面的吧(因为现在在学)……毕竟这里面的公式浩如烟海…… 对着表推了十分钟愣是没发现……明明上午还证明过…… 还有就是通过算贡献化简一些…

传说中的window8 的种子

2019独角兽企业重金招聘Python工程师标准>>> 趁着更新服务器最后时刻 发个种子 有兴趣的可以去看看 http://dl.dbank.com/c03a8fck07 转载于:https://my.oschina.net/qutterrtl/blog/28368

oracle 触发器 merge,[OT]函数|过程|触发器|插入(insert)|修改(Merge)

CREATE TABLE errlog(Errcode NUMBER,Errtext CHAR(40));--1,创建函数:CREATE OR REPLACEFUNCTION get_salary (p_deptno NUMBER ) RETURN NUMBER AS v_sal NUMBER;BEGINIF p_deptno IS NULL THENRAISE_APPLICATION_ERROR(-20991,Department number is null);ELSIF …

苏州飘“彩云” 五年规模破百亿元

7月12日在苏州举行的国际云计算与移动互联网应用研讨会的重头戏之一,是苏州科技城 “彩云计划”的发布。由硅谷云计算卓越中心(CoE)与苏州科技城联合设立的苏州科技城云计算卓越中心同时成立。苏州科技城云计算卓越中心的建立是“彩云计划”落…

php 生成导出excel,PHP导出生成EXCEL文件

PHP导出生成EXCEL文件// 解决中文乱码所做的编码转换function xecho($content){echo mb_convert_encoding($content,"gbk","auto");}// 必须要的基本headerheader("Content-Type: application/vnd.ms-excel; charsetutf-8");header("Conten…