关闭

Java并发编程:并发容器之CopyOnWriteArrayList(转载)

原文链接:   http://ifeve.com/java-copy-on-write/      Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOn...
阅读(66) 评论(0)

JAVA绝对干货——List、Set、Map并发数据结构对比实现

http://blog.csdn.net/tianyijavaoracle/article/details/41645393 Java并发数据结构对比实现 在对List、Set、Map并发应用场合,我们可以使用Collections的下面方法将非线程安全List、set、Map转化为线程安全的。但是效率并不是最好的,JDK提供了专门的线程安全List与Set实现类,后面我们将讨...
阅读(106) 评论(0)

[Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨

http://blog.csdn.net/luanlouis/article/details/43017071       Map作为键值对Entry的的容器,对其内部 键值对Entry 的遍历总归是要有一个顺序的。       本文重点讨论HashMap及其子类LinkedHashMap的遍历机制,总结出两者的特点和适用情况。  CSDN-2014博客之星投票啦 ...
阅读(176) 评论(0)

HashMap为什么是线程不安全的?

一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题? HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。 javadoc中关于hashmap的一段描述如下: 此实现不是...
阅读(172) 评论(0)

DelayQueue 队列

DelayQueue----一种有序队列,特点就是只有在队列中的元素到期后才能取出。               1.内存中哪些对象到了超时时间,需要从内存中清除出去。               2.服务器连接中有哪些连接很长时间未操作,需要关闭这些连接               3.任务中有哪些到了执行时间,该进行调度了。 简单的方法就是写一个线程不断去检查每...
阅读(193) 评论(0)

java 之DelayQueue实际运用示例

在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。 Delayed,一种混合风格的接口,用来标记那些应该在给定延迟时间之后执行的对象。此接口的实现必须定义...
阅读(389) 评论(0)

SynchronousQueue的简单应用2

SynchronousQueue的定义如下 public class SynchronousQueue extends AbstractQueue implements BlockingQueue, Serializable 从上面可以看出,它实现BlockingQueue,所以是阻塞队列,从名字看,它又是同步的。 它模拟的功能类似于生活中一手交钱一手交货这种情形...
阅读(304) 评论(0)

SynchronousQueue

SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。       不能在同步队列上进行 peek,因为仅在试图要取得元素时,该元素才存在;       除非另一个线程试图移除某个元素,否则也不能(使用任何方法)添加元素;也不能迭代队列,因为其中没有元素可用于迭代。队列的头是尝试添加到队列中...
阅读(279) 评论(0)

BlockingQueue的使用

本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作.      使用BlockingQueue的关键技...
阅读(382) 评论(0)

并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法

在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注:什么叫线程安全?这个首先要明确。线程安全就是说多线程访问同...
阅读(850) 评论(0)

ArrayBlockingQueue跟LinkedBlockingQueue的区别

1.队列中的锁的实现不同        ArrayBlockingQueue中的锁是没有分离的,即生产和消费用的是同一个锁;        LinkedBlockingQueue中的锁是分离的,即生产用的是putLock,消费是takeLock   2.在生产或消费时操作不同      ArrayBlockingQueue基于数组,在生产和消费的时候,是直接将枚举对象...
阅读(3917) 评论(0)

LinkedBlockingQueue的put,add跟offer的区别

LinkedBlockingQueue的put,add和offer的区别        最近在学习>,有很多java.util.concurrent包下的新类。LinkedBlockingQueue就是其中之一,顾名思义这是一个阻塞的线程安全的队列,底层应该采用链表实现。        看其API的时候发现,添加元素的方法竟然有三个:add,put,offer。 且这三个元素...
阅读(16066) 评论(0)

java中PriorityQueue优先级队列使用方法

优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。   PriorityQueue是从JDK1.5开始提供的新的数据结构接口。   如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。        由于网上的资料大多将优先级队列各个方法属性,很少有实例讲解的,为方便大家以后...
阅读(1264) 评论(0)

ConcurrentHashMap原理分析

集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅...
阅读(370) 评论(0)

探索 ConcurrentHashMap 高并发性的实现机制

简介 ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。 由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代...
阅读(699) 评论(0)
17条 共2页1 2 下一页 尾页
    个人资料
    • 访问:7804900次
    • 积分:67021
    • 等级:
    • 排名:第28名
    • 原创:254篇
    • 转载:2716篇
    • 译文:3篇
    • 评论:714条
    文章分类
    最新评论