java并发集合有哪些_java中常见并发集合有哪些?详细解析
关于java中有关集合的知识点,相信大家还是有所了解的。集合中所包含的知识点是非常丰富的,而且可以细分为很多类型。今天就来为大家介绍一下并发集合的有关知识,并且用实际代码为大家展示,一起来看看吧。
首先我们需要知道的是,并发集合是jdk5.0重要的特性,增加了并发包java.util.concurrent.*。Java内存模型、volatile变量及AbstractQueuedSynchronizer(简称AQS同步器),是并发包众多实现的基础。
常见的并发集合:
1.ConcurrentHashMap:线程安全的hashmap的实现
2.CopyOnWriteArrayList:线程安全且在读操作时无锁的ArrayList
3.CopyOnWriteArraySet:基于CopyOnWriteArrayList,不添加重复元素
4.ArrayBlockingQueue:基于数组、先进先出、线程安全,可实现指定时间的阻塞读写,并且容量可以限制
5.LinkedBlockingQueue:基于链表实现,读写各用一把锁,在高并发读写操作都多的情况下,性能优于ArrayBlockingQueue
另外说一下,CopyOnWrite集合即写时复制的集合
通俗的理解是当我们往一个集合添加元素的时候,不直接往当前集合添加,而是先将当前集合进行Copy,复制出一个新的集合,然后新的集合里添加元素,添加完元素之后,再将原集合的引用指向新的集合。
这样做的好处是我们可以对CopyOnWrite集合进行并发的读,而不需要加锁,因为当前集合不会添加任何元素。所以CopyOnWrite集合也是一种读写分离的思想,读和写不同的集合。
实例代码展示如下:package com.ifeve.book;
import java.util.Map;
import com.ifeve.book.forkjoin.CopyOnWriteMap;
/**
* 黑名单服务
*
* @author fangtengfei
*
*/
public class BlackListServiceImpl
{
private static CopyOnWriteMap blackListMap = new CopyOnWriteMap (
1000);
public static boolean isBlackList(String id)
{
return blackListMap.get(id) == null ? false : true;
}
public static void addBlackList(String id)
{
blackListMap.put(id, Boolean.TRUE);
}
/**
* 批量添加黑名单
*
* @param ids
*/
public static void addBlackList(Map ids)
{
blackListMap.putAll(ids);
}
}
另外需要注意的是:
1.减少扩容开销。根据实际需要,初始化CopyOnWriteMap的大小,避免写时CopyOnWriteMap扩容的开销。
2.使用批量添加。因为每次添加,容器每次都会进行复制,所以减少添加次数,可以减少容器的复制次数。如使用上面代码里的addBlackList方法。
关于并发集合的相关知识你都了解了吗?具体的代码已经为大家展示出来了。如果你对java知识感兴趣,想要了解更多java基础知识,敬请关注奇Q工具网。
推荐阅读:
java并发集合有哪些_java中常见并发集合有哪些?详细解析相关推荐
- java对集合的操作_Java中对List集合的常用操作
目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...
- java中常见的限流算法详细解析
目录 前言 1. 验证限流以及容器限流 2. 服务端限流 2.1 固定时间窗口 2.2 滑动时间窗口 2.3 漏桶算法 2.4 令牌桶算法 前言 以下的文章参考了一些具体的资料加深了解 B站:Java ...
- PHP中使用CURL之php curl详细解析和常见大坑
这篇文章主要介绍了PHP中使用CURL之php curl详细解析和常见大坑 ,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 七夕啦,作为开发,妹子没得撩就"撩"下服务器 ...
- Linux内核中内存管理相关配置项的详细解析3
接前一篇文章:Linux内核中内存管理相关配置项的详细解析2 5. 2:1 compression allocator (zbud) 对应配置变量为:CONFIG_ZBUD. 此项默认为选中(如果前一 ...
- Java中常见的集合框架及常用的方法
本篇文章主要说明Java中一些常见的集合框架及经常用到的一些方法 , 由于都是一些父类 , 所以没有做太深入的分析说明 , 后面的文章将会分别对List , Set , Map及其常用子类进行深入研究 ...
- Java并行有优势吗_Java中不同的并发实现的性能比较
Fork/Join框架在不同配置下的表现如何? 正如即将上映的星球大战那样,Java 8的并行流也是毁誉参半.并行流(Parallel Stream)的语法糖就像预告片里的新型光剑一样令人兴奋不已.现 ...
- java常见的报错_Java中常见的错误有哪些?
原标题:Java中常见的错误有哪些? 1.java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 原因: 1.对系统所访 ...
- java 三大集合_java中的三大集合入门笔记(简单实用)
为什么使用集合框架 如图: 集合的好处: 集合弥补了数组的缺陷,它比数组更灵活更实用,可大大提高软件的开发效率,而且不同的集合适用于不同的场合. Java集合主要分为以下3种类型 Java集合框架提供 ...
- java中两种遍历集合的方式_Java中Map集合的两种遍历方式
Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...
最新文章
- 解决Table td设置了相同百分比,由于文字个数不同导致列宽不同问题
- 找找Amazon的A9算法更新和变化的蛛丝马迹!
- python linux解密zip_Python Linux系统管理之使用Python管理压缩包
- Alpha冲刺第二天
- 初级程序员为避免淘汰该怎么办?
- 《WinForm开发系列之控件篇》Item31 MenuStrip(暂无)
- HttpClient FormUrlEncodedContent System.UriFormatException: 无效的 URI: URI 字符串太长问题解决方案
- 搭积木php编程,Primo Toys,一款可以同时搭积木与编程的玩具
- 按键精灵--VS挤房器_Fly_v2.5版
- 通过 Nginx 来实现禁止国外IP访问网站
- 用Python绘制标准时钟
- Vue制作图片翻面效果
- C|倒三角(trangle)
- word文件损坏打不开如何修复?文件丢失怎么办?
- python 字典的常见方法
- 如何选择语音短信通知?语音短信通知接入教程
- Event-B 形式化方法
- oracle exp 导出字符集,oracle exp/imp 字符集
- live.cn邮箱注册帐号方法
- BDYX 电话面试题目
热门文章
- excel工具栏隐藏了怎么办_真正的EXCEL隐藏技巧来啦!这5个你都会吗?
- php扩展兼容,PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性_PHP教程
- 项目上线简化流程介绍
- Echarts4.0 使用系列——折线图,这里可能有你需要的
- 根据STATUS信息对MySQL进行优化
- mysql 插入汉字 异常 Incorrect string value: '\xE8\xA7\x84\xE5\x88\x99' for column 'name'
- NTP 时间同步流量使用过大 问题解决
- SQL判断文件是否存在
- 对ActiveRecord的评论
- JS - Promise使用随笔