社区
Java EE
帖子详情
ArrayBlockingQueue和CopyOnWriteArrayList有什么区别?
codeyell-com
2010-12-09 01:02:10
好像都可以用来多线程时缓存任务
哪位高手讲解一下这两个的区别?谢谢
...全文
104
3
打赏
收藏
ArrayBlockingQueue和CopyOnWriteArrayList有什么区别?
好像都可以用来多线程时缓存任务 哪位高手讲解一下这两个的区别?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jlins
2010-12-10
打赏
举报
回复
一个是阻塞队列 另外一个不是
codeyell-com
2010-12-10
打赏
举报
回复
顶顶 回复内容太短了!
yaoweijq
2010-12-09
打赏
举报
回复
一个是由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序
另一个是ArrayList 的一个线程安全的变体,其中所有可变操作(add、set 等等)都是通过对底层数组进行一次新的复制来实现的
没有实际用过。。。
【2018最新最详细】并发多线程教程
【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 3.java内存模型以及happens-before规则 4.彻底理解synchronized 5.彻底理解volatile 6.你以为你真的了解final吗? 7.三大性质总结:原子性、可见性以及有序性 8.初识Lock与Abstract
Queue
dSynchronizer(AQS) 9.深入理解Abstract
Queue
dSynchronizer(AQS) 10.彻底理解ReentrantLock 11.深入理解读写锁ReentrantRead
Write
Lock 12.详解Condition的await和signal等待通知机制 13.LockSupport工具 14.并发容器之ConcurrentHashMap(JDK 1.8版本) 15.并发容器之ConcurrentLinked
Queue
16.并发容器之
Copy
On
Write
Array
List
17.并发容器之ThreadLocal 18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题 19.并发容器之
Blocking
Queue
20.并发容器之
Array
Blocking
Queue
和Linked
Blocking
Queue
实现原理详解 21.线程池ThreadPoolExecutor实现原理 22.线程池之ScheduledThreadPoolExecutor 23.FutureTask基本操作总结 24.Java中atomic包中的原子操作类总结 25.大白话说java并发工具类-CountDownLatch,CyclicBarrier 26.大白话说java并发工具类-Semaphore,Exchanger 27.一篇文章,让你彻底弄懂生产者--消费者问题
Java容器.xmind
container Collection 标记: 顶级接口 List 标记: interface
Array
List
标记: class CRUD : boolean add(E e) boolean remove(Object o) E set(int index, E element) E get(int index) 底层数组实现,查询快,增删慢 LinkedList 标记: class CRUD : boolean add(E e) E get(int index) 底层为链表,增删快,查询快 Vector 标记: class 底层数组实现,线程安全,速度太慢,没用
Copy
On
Write
Array
List
标记: class Set 标记: interface HashSet 标记: class CRUD : boolean add(E e) boolean remove(Object o) 底层哈希表,基于hashCode的equals的比较方式,线程不安全,存取速度快。 SortedSet 标记: interface TreeSet 标记: class 实现comparable接口,元素是以二叉树的形式存放的。线程不安全
Copy
On
Write
Array
Set 标记: class
Queue
标记: interface
Blocking
Queue
标记: interface
Array
Blocking
Queue
Linked
Blocking
Queue
ConcurrentLinked
Queue
标记: class Map 标记: 顶级接口 HashMap 标记: class V get(Object key) V put(K key, V value) Set
keySet() Set
> entrySet() 线程不安全,速度快,允许存放null键,null值。 SortedMap 标记: class TreeMap 对键进行排序 HashTable 标记: class Properties 标记: class 线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。 Collections 标记: 均以synchronized实现, 性能没用提高 synchronizedCollection synchronizedList synchronizedSet synchronizedMap synchronizedSortedSet synchronizedSortedSet JUC
Copy
On
Write
Array
List
写有锁,读无锁,读写之间不阻塞,优于读写锁 写入时先
copy
一个容器副本,再添加新元素,最后替换引用
copy
的容器副本过大时,速度慢,不易使用
Copy
On
Write
Array
Set 底层使用
Copy
On
Write
Array
List
实现 使用addIfAbsent()添加元素时,会遍历数组,如果存在元素,则抛弃副本 ConcurrentHashMap 初始容量默认为16段(segment),使用分段锁设计 ConcurrentLinked
Queue
高并发下性能最好的队列 无锁,采用CAS比较算法,核心参数(V,E,N) V:要更新的变量 E:预期值 N:新值 只有当V==E时,V=N;否则表示已被更新过,则取消当前操作 阻塞队列
Blocking
Queue
接口 void put(E e) 将指定元素插入此队列,如果没有可用空间,则等待 E take()获取并移除此队列头部元素,如果没有可用元素,则等待
Array
Blocking
Queue
数组结构实现,有界队列,手工固定上限 Linked
Blocking
Queue
链表结构实现,无界队列(默认上限Integer.MAX_VALUE)
Java并发包源码分析(JDK1.8)
Java并发包源码分析(JDK1.8):囊括了java.util.concurrent包中大部分类的源码分析,其中涉及automic包,locks包(Abstract
Queue
dSynchronizer、ReentrantLock、ReentrantRead
Write
Lock、LockSupport等),
queue
(
Array
Blocking
Queue
、ConcurrentLinkedDeque、Delay
Queue
、Linked
Blocking
Queue
等) ,AQS相关应用(CountDownLatch、CyclicBarrier、Semaphore等),executor(ThreadPoolExecutor、ScheduledThreadPoolExecutor、FutureTask等),collection(ConcurrentHashMap、
Copy
On
Write
Array
List
等),对每个类的核心源码进行详细分析,笔记详细,由浅入深,层层深入,带您剖析并发编程原理
javaforkjoin源码-gitbook-BAT-interview:本文综合自己在一线互联网工作感悟,经验。记录开源框架的源码解读,数据
java forkjoin 源码 -- -- geomesa -- spring -- 算法 -- hbase -- 数据库 -- 高并发 [Java Memory Modle内存模型] [指令重排,可见性,原子性,顺序一致性] 并发同步处理 [乐观锁&悲观锁,重入锁&非重入锁,公平锁&非公平锁,锁粒度] [ReentrantLock, ReentrantRead
Write
Lock, Read
Write
Lock源码] [Condition 条件队列和Object.wait队列] 并发同步工具类 [CountDownLatch] [CyclicBarrier] [Semaphore] [Exchanger] Atomic包 并发集合 [Block
Queue
] [
Array
Blocking
Queue
] [ConcurrentLinked
Queue
] [Priority
Blocking
Queue
] [Delay
Queue
] 并发安全集合 [HashMap, ConcurrentHashMap源码] [
Array
List
, LinkedList,
Copy
On
Write
Array
List
源码]
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章