摘要:
Java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CAS CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文 阅读全文
posted @ 2016-12-29 09:40
brave-sailor
阅读(368)
评论(0)
推荐(0)
摘要:
1. 引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现, 阅读全文
posted @ 2016-12-29 09:38
brave-sailor
阅读(253)
评论(0)
推荐(0)
摘要:
Java 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候, 不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。AtomicInteg 阅读全文
posted @ 2016-12-29 09:34
brave-sailor
阅读(1378)
评论(0)
推荐(0)
摘要:
线程不安全的HashMap 因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下H 阅读全文
posted @ 2016-12-29 09:33
brave-sailor
阅读(245)
评论(0)
推荐(0)
摘要:
ConcurrentHashMap ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地 阅读全文
posted @ 2016-12-29 09:32
brave-sailor
阅读(324)
评论(0)
推荐(0)
摘要:
跳跃表是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间),并且对并发算法友好。 关于跳跃表的具体介绍可以参考MIT的公开课:跳跃表 跳跃表的应用 Skip list(跳表)是一种可以代替平衡树的数据结构,默认是按照Key值升序的。Skip list让已排序的数据分布在多层链表中,以0-1随机数决定一个数据的向上攀升与否,通过“空间来... 阅读全文
posted @ 2016-12-29 09:30
brave-sailor
阅读(2002)
评论(0)
推荐(0)
摘要:
比较Java原生的 3种Map的效率。 1. TreeMap 2. HashMap 3. ConcurrentSkipListMap 结果: 模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下: Map类型 插入 查找(在100W数据量中) 10W 50W 100W 15 阅读全文
posted @ 2016-12-29 09:29
brave-sailor
阅读(728)
评论(0)
推荐(0)
摘要:
Java SE5的Java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor在客户端和执行任务之间提供了一个间接层,Executor代替客户端执行任务。Executor允许你管理异步任务的执行,而无须显式地管理线程的生命周 阅读全文
posted @ 2016-12-29 09:28
brave-sailor
阅读(478)
评论(0)
推荐(0)

浙公网安备 33010602011771号