Java并发编程
enen199202
这个作者很懒,什么都没留下…
展开
-
ReentrantLock学习
ReentrantLock是一个可重入的互斥锁,重入锁是一种递归无阻塞的同步机制。ReentrantLock由最近成功获取锁,还没有释放的线程所拥有,当锁被另一个线程拥有时,调用lock的线程可以成功获取锁。如果锁已经被当前线程拥有,当前线程会立即返回。 重入锁的构造方法提供一个可选的公平参数: 公平情况下,操作会排一个队按顺序执行,来保证执行顺序。转载 2016-08-19 13:57:58 · 311 阅读 · 0 评论 -
concurrentHashMap学习(三)
ConcurrentHashMap的简要总结:1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁;2、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自转载 2016-08-12 11:32:51 · 232 阅读 · 0 评论 -
concurrentHashMap学习(一)
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅原创 2016-08-12 11:04:55 · 275 阅读 · 0 评论 -
concurrentHashMap学习(二)
一、ConcurrentHashMap的初始化下面我们来结合源代码来具体分析一下ConcurrentHashMap的实现,先看下初始化方法:public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) { if (!(l原创 2016-08-12 11:26:47 · 263 阅读 · 0 评论 -
concurrentHashMap学习(四)
package JUC;import java.util.Collections;import java.util.HashMap;import java.util.Hashtable;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * 测试HashMap和ConcurrentHashMap转载 2016-08-12 11:42:17 · 282 阅读 · 0 评论 -
ConcurrentLinkedQueue学习(一)
Java并发包中有很多精心设计的高并发容器。有ConcurrentHashMap、ConcurrentSkipListMap 、ConcurrentLinkedQueue等。ConcurrentLinkedQueue就是其中设计最为优雅的高并发容器。它被设计成了无锁的、无界的、非阻塞式的单向链表结构。现在就让我们来一步一步揭开他们神秘的面纱。 一说到链表结构,我们首先就会想到的就转载 2016-08-12 14:37:02 · 280 阅读 · 0 评论 -
ConcurrentLinkedQueue学习(二)
服务端原本有个定时任务对一个集合ArrayList 中的消息做处理。 因为考虑到处理消息是先进先出原则,所以优化的时候考虑改用ConcurrentLinkedQueue 当时没仔细深入研究过这个集合就匆匆上线了。结果刚上线第二天就出问题了。服务端一次优化演变成了一个缺陷,还好及时回退了版本,后果才不是很严重。回退后对ConcurrentLinkedQueue 做了一个简单的测试代码如下转载 2016-08-12 14:50:07 · 269 阅读 · 0 评论 -
ConcurrentLinkedQueue学习(三)
ConcurrentLinkedQueue应该注意的地方 刚开始认为使用了ConcurrentLinkedQueue类之后意味着不需要自己进行任何同步或加锁操作,查了下资料,如果直接使用它提供的函数,比如:queue.add(obj); 或者 queue.poll(obj);,这样我们自己不需要做任何同步。但如果是非原子操作,比如: if(!queue.isEmpty()) {转载 2016-08-12 14:52:01 · 304 阅读 · 0 评论 -
原子操作类学习(一)
原子操作类分类原子更新方式原子更新基本类型原子更新数组原子更新引用原子更新属性(字段)原子更新基本类型AtomicBoolean :原子更新布尔类型AtomicInteger: 原子更新整型AtomicLong: 原子更新长整型原子更新数组AtomicIntegerArray :原子更新整型数组里的元素AtomicLongArray :原原创 2016-08-15 13:39:18 · 301 阅读 · 0 评论