随笔分类 -  java-collection

上一页 1 2 3 下一页
阻塞队列之三:SynchronousQueue同步队列 阻塞算法的3种实现
摘要:一、SynchronousQueue简介 Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。 不像ArrayBlockingQueue或LinkedListBloc 阅读全文
posted @ 2013-08-12 09:23 duanxz 阅读(18830) 评论(3) 推荐(3)
阻塞队列之四:ArrayBlockingQueue
摘要:一、ArrayBlockingQueue简介 一个由循环数组支持的有界阻塞队列。它的本质是一个基于数组的BlockingQueue的实现。 它的容纳大小是固定的。此队列按 FIFO(先进先出)原则对元素进行排序。 队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。  阅读全文
posted @ 2013-08-10 15:15 duanxz 阅读(6399) 评论(0) 推荐(1)
阻塞队列之五:LinkedBlockingQueue
摘要:一、LinkedBlockingQueue简介 LinkedBlockingQueue是一个使用链表完成队列操作的阻塞队列。链表是单向链表,而不是双向链表。采用对于的next构成链表的方式来存储对象。由于读只操作队头,而写只操作队尾,这里巧妙地采用了两把锁,对put和offer采用putLock,对 阅读全文
posted @ 2013-07-20 10:26 duanxz 阅读(5693) 评论(0) 推荐(0)
阻塞队列之六:LinkedBlockingDeque
摘要:一、LinkedBlockingDeque简介 java6增加了两种容器类型,Deque和BlockingDeque,它们分别对Queue和BlockingQueue进行了扩展。 Deque是一个双端队列,deque(双端队列) 是 "Double Ended Queue" 的缩写。因此,双端队列是 阅读全文
posted @ 2013-07-03 13:53 duanxz 阅读(14960) 评论(0) 推荐(5)
阻塞队列之七:DelayQueue延时队列
摘要:一、DelayQueue简介 是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的(PriorityQueue实际存放Delayed接口对象),即队头对象的延迟到期时间最短(队列顶端总是最小的元素)。注意:不能将n 阅读全文
posted @ 2013-05-14 17:12 duanxz 阅读(2977) 评论(0) 推荐(1)
Java中的Hashtable实现方法
摘要:首先,先上Hashtable.class中的代码,所有的Java实现方法都在这个文件中了。Hashtable.class当然,对于这个文件的内容,你现在无需看懂它,如果你看懂了,我们下面也就没有意义讲解了。现在,来让我们回顾下,在Java中使用Hashtable中的方法: Hashtable使用的方... 阅读全文
posted @ 2013-04-24 14:56 duanxz 阅读(649) 评论(0) 推荐(0)
并发队列之ConcurrentLinkedQueue(非阻塞队列)
摘要:前言 常用的并发队列有阻塞队列和非阻塞队列,前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好,下面就看看常用的非阻塞ConcurrentLinkedQueue是如何使用CAS实现的。 一、ConcurrentLinkedQueue简介 ConcurrentLinkedQu 阅读全文
posted @ 2012-12-11 10:12 duanxz 阅读(605) 评论(0) 推荐(0)
ArrayList的实现原理
摘要:ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小 阅读全文
posted @ 2012-10-25 20:03 duanxz 阅读(366) 评论(0) 推荐(0)
LinkedList的实现原理
摘要:List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。 此类实现 Dequ 阅读全文
posted @ 2012-10-25 19:46 duanxz 阅读(663) 评论(0) 推荐(0)
WeakHashMap的实现原理
摘要:目录: 《对象的强、软、弱和虚引用》 《WeakHashMap的实现原理》 一、WeakHashMap简介 WeakHashMap 继承于AbstractMap,实现了Map接口。 和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键 阅读全文
posted @ 2012-10-25 19:38 duanxz 阅读(815) 评论(1) 推荐(1)
Collections.synchronizedMap()
摘要:Collections.synchronizedMap()方法来获取一个线程安全的集合(Collections.synchronizedMap()实现原理是Collections定义了一个SynchronizedMap的内部类,这个类实现了Map接口,在调用方法时使用synchronized来保证线 阅读全文
posted @ 2012-10-25 19:35 duanxz 阅读(6653) 评论(0) 推荐(0)
SynchronizedMap
摘要:在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK 1.0的一部分。Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的——Hashtable的所有方法都是同步的。 此时,无竞争的同步会导致可观的性能代价。Has 阅读全文
posted @ 2012-10-25 19:30 duanxz 阅读(1262) 评论(1) 推荐(0)
并发容器之ConcurrentLinkedDeque
摘要:在Java中,最常用的数据结构可能是列表。有数目不详的元素列表,你可以添加、阅读、或删除任何位置的元素。此外,并发列表允许不同的线程列表中添加或删除元素时不产生任何数据不一致。非阻塞列表提供如下操作,如果操作不能立即完成,列出抛出异常或者返回一个null值。Java 7中引入了ConcurrentL 阅读全文
posted @ 2012-10-23 15:31 duanxz 阅读(939) 评论(0) 推荐(0)
阻塞队列之八:PriorityBlockingQueue优先队列
摘要:一、PriorityBlockingQueue简介 PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现,研究过数组方式存放最小堆节点的都知道,直接遍历队列元素是无序的。 PriorityBlockingQueue类似于ArrayB 阅读全文
posted @ 2012-10-22 15:05 duanxz 阅读(5573) 评论(0) 推荐(0)
JAVA迭代器与迭代模式
摘要:一、介绍 在jdk中,与迭代器相关的接口有两个:Iterator 与 IterableIterator:迭代器,Iterator及其子类通常是迭代器本身的结构与方法;迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这 阅读全文
posted @ 2012-10-18 18:10 duanxz 阅读(1472) 评论(0) 推荐(0)
并发队列对比之一:ConcurrentLinkedQueue、LinkedBlockingQueue对比分析
摘要:关于ConcurrentLinkedQueue和LinkedBlockingQueue: 1.LinkedBlockingQueue是使用锁机制,ConcurrentLinkedQueue是使用CAS算法,虽然LinkedBlockingQueue的底层获取锁也是使用的CAS算法 2.关于取元素,C 阅读全文
posted @ 2012-10-12 14:18 duanxz 阅读(2480) 评论(0) 推荐(0)
并发队列对比之二:LinkedBlockingQueue和ArrayBlockingQueue性能对比
摘要:回顾下,LinkedBlockingQueue和ArrayBlockingQueue在实现上不同点有: 1、ArrayBlockingQueue使用数组存储数据,LinkedBlockingQueue使用单向链表存储数据; 2、ArrayBlockingQueue使用一个可重入锁和这个锁生成的两个条 阅读全文
posted @ 2012-10-11 15:57 duanxz 阅读(1838) 评论(0) 推荐(0)
Copy-On-Write容器之二:CopyOnWriteArraySet
摘要:一、CopyOnWriteArraySet简介 1. CopyOnWriteArraySet继承于AbstractSet,这就意味着它是一个集合。 2. CopyOnWriteArraySet包含CopyOnWriteArrayList对象,它是通过CopyOnWriteArrayList实现的。而 阅读全文
posted @ 2012-10-10 15:53 duanxz 阅读(774) 评论(0) 推荐(0)
Copy-On-Write容器之一:CopyOnWriteArrayList
摘要:一、CopyOnWriteArrayList简介 为了维护对象的一致性快照,要依靠不可变性(immutability)来消除在协调读取不同的但是相关的属性时需要的同步。对于集合,这意味着如果有大量的读(即get() ) 和迭代,不必同步操作以照顾偶尔的写(即 add() )调用。对于新的 CopyO 阅读全文
posted @ 2012-10-10 11:36 duanxz 阅读(831) 评论(0) 推荐(0)
并发容器Map之一:ConcurrentHashMap原理(jdk1.7)
摘要:一、ConcurrentHashMap简介 HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有 阅读全文
posted @ 2012-10-09 09:57 duanxz 阅读(566) 评论(0) 推荐(1)

上一页 1 2 3 下一页