多线程并发锁
FromNowOnUntilTheEnd
每日记录
展开
-
ArrayBlockIngQueue源码原理用法解析
ArrayBlockIngQueue的类结构如图所示,ArrayBlockingQueue内部有个数组items用来存放队列元素,putindex下标标示入队元素下标,takeindex是出对下标,count统计队列元素个数。从定义可知ArrayBlockingQueue没有使用volatile修饰,因为访问这些变量使用都是在锁块内,并不存在可见性问题。另外有个独占锁lock用来对出入队...原创 2019-09-09 11:03:38 · 391 阅读 · 0 评论 -
BlockingQueue阻塞队列公用方法
并发队列分为阻塞队列和非阻塞队列,阻塞队列使用锁实现,非阻塞队列使用CAS非阻塞算法实现(CAS(比较与交换,Compare and swap)是一种有名的无锁算法。CAS, CPU指令,在大多数处理器架构,包括IA32、Space中采用的都是CAS指令,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。CAS的语义是...原创 2019-09-09 15:40:02 · 249 阅读 · 0 评论